我在webform上有一些DropDownLists,每个都指向一个SqlDataSource。其中一些数据源使用这些DropDownLists中的一个作为select参数,将列表过滤为特定类别。
对于某些用户,将自动设置和禁用其中两个DropDownLists。
当我提交启用了下拉列表的表单时,它可以正常工作但是当它们被禁用时,DropDownList的SelectedValue将被重置为列表中的第一个。
我的DropDownLists构造如下:
<asp:DropDownList ID="ddlManager" runat="server" DataSourceID="dsManagers"
EnableViewState="false" DataValueField="ManagerID" DataTextField="MgrName"
AppendDataBoundItems="false" ondatabound="ddlManager_DataBound" >
下拉列表在数据绑定事件上添加了一个额外的项目,如下所示:
protected void ddlManager_DataBound(object sender, EventArgs e)
{
this.ddlManager.Items.Insert(0, new ListItem("--Manager--", "--Manager--"));
}
任何人都可以解释为什么会发生这种情况吗?
由于
答案 0 :(得分:1)
这是设计的。未发布已禁用控件的值。使用其他一些机制。
答案 1 :(得分:1)
或者,您可以读/写List<>
或Dictionary<>
;只要启用了DropDownList框,就可以assign the list到DropDownList
数据源。
答案 2 :(得分:0)
我认为这很简单就是没有启用。如果未启用,则无法保存值,并恢复为默认值。
答案 3 :(得分:0)
要添加到KMån所说的内容,您还可以使用视图状态而不是列表。