我创建了一个ASP.NET网站。 我想要做的是根据下拉列表中选择的项目使标签更改其内容。 我试过这个,但它不起作用:
下拉列表如下所示:
<asp:DropDownList ID="DropDown1" runat="server" >
<asp:ListItem Value="a"></asp:ListItem>
<asp:ListItem Value="b"></asp:ListItem>
onselectedindexchanged="DropDown1_SelectedIndexChanged"
</asp:DropDownList>
标签:
<asp:Label ID="Label1" Text="" runat="server"/>
我想这样做而不必使用 PostBack 。
我尝试使用ajax 更新面板像这样:
<asp:UpdatePanel runat="server" id="UpdatePanel" updatemode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger controlid="DropDown1" EventName="SelectedIndexChanged" />
</Triggers>
<ContentTemplate>
<asp:Label ID="Label1" Text="" runat="server"/>
</ContentTemplate>
</asp:UpdatePanel>
代码背后的 DropDown1_SelectedIndexChanged 事件:
protected void DropDown1_SelectedIndexChanged(object sender, EventArgs e)
{
Label1.Text = DropDown1.SelectedValue;
}
但这不起作用。
任何人都可以帮助我吗?
非常感谢您的帮助
答案 0 :(得分:9)
这是你的解决方案..
用下面的一个替换你的下拉式aspx控件..
<asp:DropDownList ID="DropDown1" runat="server" onselectedindexchanged="DropDown1_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Value="a"></asp:ListItem>
<asp:ListItem Value="b"></asp:ListItem>
</asp:DropDownList>
<asp:UpdatePanel runat="server" id="UpdatePanel" updatemode="Conditional">
<ContentTemplate>
<asp:Label ID="Label1" Text="test" runat="server"/>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger controlid="DropDown1" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
答案 1 :(得分:5)
您需要启用autopostback并将事件处理程序定义放在正确的位置:
<asp:DropDownList ID="DropDown1" runat="server" onselectedindexchanged="DropDown1_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Value="a"></asp:ListItem>
<asp:ListItem Value="b"></asp:ListItem>
</asp:DropDownList>
答案 2 :(得分:0)
http://encosia.com/why-aspnet-ajax-updatepanels-are-dangerous/
阅读那篇文章,为什么不使用updatepanels,还有很多其他更好的解决方案来完成这项工作。