我有一个 asp.net dropDownList,它在页面加载时自动绑定到 sqlDataSource 到客户端类型的值。在页面加载时,我还创建了一个 Client 对象,它的属性之一是 ClientType。我试图根据Client对象的ClientType属性值设置ddl的SelectedValue失败。我收到以下错误消息“System.ArgumentOutOfRangeException:'ddlClientType' 的 SelectedValue 无效,因为它不存在于项目列表中”。我知道这是因为当我尝试设置所选值时列表尚未填充。有没有办法克服这个问题?谢谢!
问问题
18773 次
2 回答
5
您必须使用 DataBound 事件,一旦数据绑定完成,它将被触发
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";
}
于 2011-07-19T12:07:43.043 回答
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的Page_Load中添加:(控制的情况下不要直接调用DataBind,这是父页面的责任)
if (!IsPostBack)
{
Page.DataBind(); // only for pages
}
于 2011-07-19T12:08:23.903 回答