Cascade DropDown未触发OnSelectIndexChanged事件

时间:2016-03-14 17:49:36

标签: c# asp.net dropdown

我有一个包含两个DropDowns的页面。

<div class="block-container">
    <div class="fieldItem" style="margin-top: 10px;">
        <asp:Label ID="pistaServizioLabel" runat="server">PISTA/FAMIGLIA SERVIZIO </asp:Label>
        <asp:DropDownList ID="pistaServizio" AutoPostBack="true" OnSelectedIndexChanged="pistaServizio_SelectedIndexChanged" Style="width: auto;" runat="server" AppendDataBoundItems="true">
            <asp:ListItem Text="Selezionare un valore" Value="" />
            <asp:ListItem Text="Mobile" Value="Mobile" />
        </asp:DropDownList>
    </div>
</div>
<div class="block-container">
    <div class="fieldItem" style="margin-top: 10px;">
        <asp:Label ID="ambitoLabel" runat="server">AMBITO </asp:Label>
        <asp:DropDownList ID="ambito" AutoPostBack="true" OnSelectIndexChanged="ambito_SelectedIndexChanged" Style="width: auto;" runat="server" AppendDataBoundItems="true">
        </asp:DropDownList>
    </div>
</div>

在第一个,当您选择一个值时,OnSelectIndexChanged事件(pistaServizio_SelectedIndexChanged)正在触发,并且它使用多个ListItem填充第二个DropDown。

所以,在PostBack之后,你已经填充了第二个DropDown,但是如果你从中选择一个值,它就不会触发它的OnSelectIndexChanged事件(ambito_SelectedIndexChanged)..它应该记录一些但没有任何反应

这里有两个事件处理程序

protected void pistaServizio_SelectedIndexChanged(object sender, EventArgs e)
{
    logger.LogDebug("pistaServizio_SelectedIndexChanged"); 
    if (pistaServizio.SelectedValue != "")
    {
        uploadContainer.Visible = true;
        ambito.Items.Clear();
        ambito.Items.Add(new ListItem("Seleziona un valore", ""));
        ambito.Items.Add(new ListItem("Test", "Test"));
    }
    else
    {
        uploadContainer.Visible = false;
        ambito.Items.Clear();
    }
}

protected void ambito_SelectedIndexChanged(object sender, EventArgs e)
{
    logger.LogDebug("ambito_SelectedIndexChanged");
}

有没有关于为什么第二个没有开火的建议?感谢

修改

我注意到问题不是级联事件,而是第二个DropDown。 我已经添加了两个列表项

 <asp:Label ID="ambitoLabel" runat="server">AMBITO </asp:Label>
<asp:DropDownList ID="ambito" AutoPostBack="true" OnSelectIndexChanged="ambito_SelectedIndexChanged" Style="width: auto;" runat="server">
    <asp:ListItem Text="Selezionare un valore" Value="" />
    <asp:ListItem Text="Test" Value="Test" />
</asp:DropDownList>

所以我忽略了第一个DropDown,我直接从第二个选择了一个值。 同样在这种情况下,ambito_SelectedIndexChanged不会触发

1 个答案:

答案 0 :(得分:0)

好的,解决了。代码背后有些东西破碎了。我结束了删除“ambito”DropDown,创建了一个新的,现在一切都很好了。感谢