【问题标题】:Why event not fired when I change selection on DropDownList?为什么当我更改 DropDownList 上的选择时没有触发事件?
【发布时间】:2019-04-02 03:00:18
【问题描述】:

我有这个 asp net drp 框:

<asp:DropDownList ID="ddlLayersList"
        runat="server"
        BackColor="#FFFFC0"
        CssClass="form-control fullwidth" OnTextChanged="ddlLayersList_SelectedIndexChanged" >
</asp:DropDownList>

这是我如何填写投递箱:

private void SetLayers(Dictionary<string, string> layers)
{
    ddlLayersList.DataSource = layers;
    ddlLayersList.DataValueField = "Key";
    ddlLayersList.DataTextField = "Value";
    ddlLayersList.DataBind();
    ddlLayersList.Items.Insert(0, "-Select Item-");
}

这是事件背后的代码:

protected void ddlLayersList_SelectedIndexChanged(object sender, EventArgs e)
{
}       

当我从下拉框中选择项目时,事件未触发。 知道为什么当我在DropDownList 上更改选择时没有触发事件吗?

【问题讨论】:

  • 您将它绑定到 OnTextChanged 而不是 OnSelectedIndexChanged,可能就是这种情况。还可以尝试将 AutoPostBack 设置为 true。

标签: c# asp.net .net dropdown


【解决方案1】:

您需要将AutoPostBack 属性设置为True

<asp:DropDownList ID="ddlLayersList" AutoPostBack="True">

该属性的值:

true 如果回发到服务器时自动发生 用户更改列表的选择;否则为假。默认 是假的

您还需要设置OnSelectedIndexChanged 事件而不是OnTextChanged

<asp:DropDownList ID="ddlLayersList" 
       AutoPostBack="true" runat="server" 
       OnSelectedIndexChanged="ddlLayersList_SelectedIndexChanged">

【讨论】:

    【解决方案2】:

    除了设置AutoPostBack="true" 启用自动回发之外,还要设置OnSelectedIndexChanged 事件处理程序而不是OnTextChanged(注意它们不是同一个事件):

    <asp:DropDownList ID="ddlLayersList"
               runat="server"
               BackColor="#FFFFC0"
               AutoPostBack="true"
               CssClass="form-control fullwidth" 
               OnSelectedIndexChanged="ddlLayersList_SelectedIndexChanged">
    </asp:DropDownList>
    

    【讨论】:

      猜你喜欢
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 2020-04-25
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多