级联 DropDown 未触发 OnSelectIndexChanged 事件
Cascade DropDown not firing OnSelectIndexChanged event
我有一个包含两个下拉菜单的页面。
<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>
在第一个上,当您 select 一个值时,OnSelectIndexChanged 事件 (pistaServizio_SelectedIndexChanged) 会正确触发,并且它会用多个 ListItem 填充第二个 DropDown。
因此,在 PostBack 之后,您填充了第二个 DropDown,但是如果您 select 来自它的一个值,它不会触发它的 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 并且我 select 直接从第二个中得到一个值。
同样在这种情况下,ambito_SelectedIndexChanged 没有触发
好的,解决了。代码背后有什么东西被破坏了。我结束了删除 "ambito" DropDown,创建了一个新的,现在一切正常。谢谢
我有一个包含两个下拉菜单的页面。
<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>
在第一个上,当您 select 一个值时,OnSelectIndexChanged 事件 (pistaServizio_SelectedIndexChanged) 会正确触发,并且它会用多个 ListItem 填充第二个 DropDown。
因此,在 PostBack 之后,您填充了第二个 DropDown,但是如果您 select 来自它的一个值,它不会触发它的 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 并且我 select 直接从第二个中得到一个值。 同样在这种情况下,ambito_SelectedIndexChanged 没有触发
好的,解决了。代码背后有什么东西被破坏了。我结束了删除 "ambito" DropDown,创建了一个新的,现在一切正常。谢谢