17

标记:

            <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 的​​事件,因为它不是必需的。

当我单击回发按钮时,选定项的值仍然是 DropDownList 中第一项的值。我错过了什么?

注意 请停止回复和编辑帖子。我们可以保持原样,因为它已经被回答了。

4

5 回答 5

48

如果您在 中进行数据绑定Page_Load,则本质上您也在重置 SelectedItem。

您应该将存在于Page_Load块中的if(!IsPostBack)任何绑定代码包装起来。

if(!Page.IsPostBack)
{

    // Your binding code here ...

}
于 2012-04-27T03:57:34.130 回答
4

您的代码也可能在回发后执行,清除框,因此丢失选择和所有内容。

如果是这样,请尝试将代码包装在类似if( !Page.IsPostBack ) { ... }.

于 2012-04-27T03:55:37.007 回答
0

所以这个答案是最常见原因的“明显”解决方案。但是,还有一个更令人惊讶的问题可能导致此问题!我的列表值来自数据库,这些值有换行符和回车符:“\r\n”。这些值看起来像一个无辜的空间,但实际上它们不是!我的解决方案是删除这些隐藏的 Char 值。希望能帮助到你。

于 2015-04-01T04:04:21.083 回答
-1

是的,您缺少添加下拉列表 Autopostback=true..

请尝试在您的 .aspx 页面中进行以下操作

于 2012-04-27T03:57:01.763 回答
-1

嘿,要添加所有不需要添加的第一个索引。您需要插入特定的索引号

MyList.Items.Insert(0, "ALL");
于 2012-04-27T06:52:05.297 回答