Asp.NET DropDownList SelectedItem.Value没有改变

时间:2012-04-27 03:48:57

标签: c# asp.net data-binding drop-down-menu selectedvalue

标记:

            <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中第一个项目的值。我错过了什么?

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

5 个答案:

答案 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页面中尝试以下内容