标记:
<div style="float:left;margin-top:15px;width:80px">
<asp:DropDownList ID="MyList" runat="server" Width="100px"></asp:DropDownList>
</div>
代码:
// clear vehicles list
MyList.Items.Clear();
// add 'all' option
MyList.Items.Add(new ListItem("ALL", "0"));
// add assets
foreach (CustomClass item in items)
MyList.Items.Add(new ListItem(item.Name, item.ID.ToString()));
没有事件触发SelectedIndexChanged,因为没有必要。
当我单击回发按钮时,selecteditem的值仍然是DropDownList中第一个项目的值。我错过了什么?
注意 请停止回复和编辑帖子。我们可以保留它,因为它已经被回答了。
答案 0 :(得分:40)
如果您在Page_Load
中进行数据绑定,那么您基本上也会重置SelectedItem。
您应该在Page_Load
块中包含if(!IsPostBack)
中存在的任何绑定代码。
if(!Page.IsPostBack)
{
// Your binding code here ...
}
答案 1 :(得分:4)
你的代码也可能在回发后执行,清除框,因此失去了选择权。
如果是这样,请尝试将代码包装为if( !Page.IsPostBack ) { ... }
。
答案 2 :(得分:0)
所以这个答案是对最常见原因的“明显”解决方案。但是,还有一个令人惊讶的问题可能导致这个问题!我的列表值来自数据库,值包含换行符和回车符:“\ r \ n”。这些价值看起来像一个无辜的空间,但实际上它们不是!我的解决方案是删除这些隐藏的Char值。希望它有所帮助。
答案 3 :(得分:-1)
MyList.Items.Insert(0, "ALL");
答案 4 :(得分:-2)
是的,您缺少添加下拉列表Autopostback = true ..
请在.aspx页面中尝试以下内容