我正在尝试使用System.Web.UI.WebControls.ListItems的Collections.Generic.List来绑定asp:DropDownList。 DataBind()引发此错误。


  System.ArgumentOutOfRangeException:'ddlPlatinumOptions'具有一个SelectedValue,该值无效,因为它不存在于项目列表中。


.ascx


<asp:DropDownList ID="ddlPlatinumOptions" runat="server" AutoPostBack="true" width="100%"></asp:DropDownList>




.ascx.cs

public void BindPlatinumOptions()
{
    ddlPlatinumOptions.DataTextField = "Text";
    ddlPlatinumOptions.DataValueField = "Value";
    ddlPlatinumOptions.DataSource = _platinumOptions;
    ddlPlatinumOptions.DataBind(); // Throwing Error
}


主持人

MattressProtectionInfo standard = RF_ProtectionPlan.GetMattressPlanInfo(MattressId, false);
MattressProtectionInfo premium = RF_ProtectionPlan.GetMattressPlanInfo(MattressId, true);
List<ListItem> plans = new List<ListItem>();
if (standard != null)
{
    plans.Add(new ListItem(standard.Price.ToString("C") + " - Standard 5-Year Platinum Protection", standard.ProductID.ToString()));
}
if (premium != null)
{
    plans.Add(new ListItem(premium.Price.ToString("C") + " - Premium 5-Year Platinum Protection", premium.ProductID.ToString()));
}

_view.PlatinumOptions = plans;
_view.BindPlatinumOptions();


资料范例


价值=“ 21696”文本=“ $ 99.95-标准5年白金保护”
价值=“ 21702”文字=“ $ 119.95-特级5年白金保护”


我尝试过的


在我的数据之前先清空数据源和数据绑定以清除所有内容(以及对dataBind的破坏)
重新定位DataTextField和DataValueField的位置(浪费时间-无变化)
在数据绑定之前声明所选索引0
ddlPlatinumOptions.Items.Clear();
ddlPlatinumOptions.ClearSelection();


我正在抓稻草。似乎databind试图在下拉列表中选择不存在的内容。

我没看到的代码中有错误吗?有任何想法吗?

最佳答案

好吧,这是一个超出范围的异常。在绑定到DropDownList之前,是否在任何时候将SelectedIndex设置为默认值?

10-06 07:05