【问题标题】:ASP and C# - DropDownList SelectionASP 和 C# - DropDownList 选择
【发布时间】:2015-11-30 10:41:36
【问题描述】:

您好 Stack Overflow 社区
我有一个关于 ASP DropDownList 的问题,当我在 C# 代码中请求 SelectedItem.Text 字符串时,它似乎没有产生正确的选定输出。

以下是我的 DropDownList 的 ASP 代码:

<asp:DropDownList ID="ddlRecalllayaway" AccessKey="z" 
runat="server" AutoPostBack="True" Height="20px" 
Width="130px"></asp:DropDownList>


这是我的 C# 代码的一部分,它成功触发 SelectedIndexChanged 事件:

public void ddlRecalllayaway_SelectedIndexChanged(object sender, System.EventArgs e) {
    String selected = ddlRecalllayaway.SelectedItem.Text;
    // 我想对已选择的字符串做的事情
}



当我在浏览器中使用 DropDownList 并选择顶部以外的项目时,事件成功触发,但是我添加了一个断点并将鼠标悬停在 selected变量发现它说的是我的DropDownList 中的顶部项目,而不是我选择的项目。

感谢任何有用的建议。谢谢!

编辑:
我的问题与“可能重复”不同,因为接受的答案是指 AutoPostBack 属性设置为 true。但是,在我的中,我已经将其设置为 true 但它不起作用。

【问题讨论】:

  • 如何将事件处理程序绑定到控件?您在控件上设置了AutoPostBack 属性,但没有设置OnSelectedIndexChanged
  • 如果已更改所选索引,则只会触发事件。您需要确保您选择的是索引,而不仅仅是更改显示的文本。默认情况下,列表中的第一项将被选中(在索引 0 处),这解释了为什么再次选择它不会更改索引或触发事件....
  • 我刚刚在 ASP 代码中添加了OnSelectedIndexChanged="ddlRecalllayaway_SelectedIndexChanged"。这仍然不起作用。该事件触发得非常好,但它只是指已选择的任何项目。

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


【解决方案1】:

这在DropDownList 的内容在回发时再次绑定时很常见,这将发生在您的SelectedIndexChanged 事件之前,从而重置所选索引。

确保您的绑定代码仅在加载的第一页上。

if (!Page.IsPostBack)
{
    // bind drop down list here
}

【讨论】:

    猜你喜欢
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    相关资源
    最近更新 更多