Asp.NET 下拉列表选定项.值不变

本文关键字:NET 下拉列表 Asp | 更新日期: 2023-09-27 18:32:35

markup:

            <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()));

没有事件触发选定索引已更改,因为它不是必需的。

当我单击回发按钮时,所选项的值仍然是下拉列表中第一项的值。我错过了什么?

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

Asp.NET 下拉列表选定项.值不变

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

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

if(!Page.IsPostBack)
{
    // Your binding code here ...
}

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

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

所以这个答案是最常见原因的"明显"解决方案。但是,还有一个令人惊讶的问题可能会导致这种情况!我的列表值来自数据库,这些值具有换行符和回车符:"''r'"。这些值看起来像一个无辜的空间,但实际上并非如此!我的解决方案是删除这些隐藏的 Char 值。希望对您有所帮助。

是的,您缺少添加下拉列表自动回发=true。

请在您的.aspx页面中尝试以下内容

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

MyList.Items.Insert(0, "ALL");