2011-07-19 59 views
5

我有一个asp.net dropDownList它自动绑定到一个sqlDataSource的客户端类型的值在页面加载。在页面加载时,我也创建了一个Client对象,其中一个属性是ClientType。我试图根据Client对象的ClientType属性的值设置ddl的SelectedValue失败。我收到以下错误消息“System.ArgumentOutOfRangeException:'ddlClientType'有一个无效的SelectedValue,因为它不存在于项目列表中”。我知道这是因为当我尝试设置选定的值时,列表尚未填充。有没有办法克服这个问题?谢谢!设置数据绑定的SelectedValue DropDownList

+2

你能发表一些代码吗? –

回答

5

您必须使用数据绑定事件,它会被解雇,一旦绑定完成

protected void DropDownList1_DataBound(object sender, EventArgs e) 
{ 
    // You need to set the Selected value here... 
} 

如果你真的想看到在页面加载事件的值,然后设置前致电DataBind()方法值...

protected void Page_Load(object sender, EventArgs e) 
{ 
    DropdownList1.DataBind(); 
    DropdownList1.SelectedValue = "Value"; 
} 
+0

我试过了,仍然收到相同的错误信息。 –

+0

检查我的编辑部分。 –

+0

我再次尝试使用dataBound事件,我不再收到错误消息,但未选择该值。 –

4

之前设置所选值检查项目是否在列表中按索引选择它

<asp:DropDownList id="dropDownList" 
        AutoPostBack="True" 
        OnDataBound="OnListDataBound" 
        runat="server /> 
protected void OnListDataBound(object sender, EventArgs e) 
{ 
    int itemIndex = dropDownList.Items.IndexOf(itemToSelect); 
    if (itemIndex >= 0) 
    { 
     dropDownList.SelectedItemIndex = itemIndex; 
    } 
} 

编辑:添加...

如果在页面加载做绑定的东西,尝试按照这种方式:

  • 移动在被覆盖的DataBind()方法
  • 所有绑定相关的代码在Page_Load中加入:(在控件不直接调用DataBind的情况下,这是父页的责任)
if (!IsPostBack) 
{ 
    Page.DataBind(); // only for pages 
} 
相关问题