如何在没有完整回发的情况下触发 DropDownList 的 SelectedIndexChanged() 事件?

问题描述 投票:0回答:3

DropDownList 的

SelectedIndexChanged()
事件填充页面上的 ListBox。显然,这会将页面发送回服务器。有什么办法可以在不完全回发的情况下实现它吗?

protected void ddlTablo_SelectedIndexChanged(object sender, EventArgs e)
{
    List<string> list = new List<string>();
    ListBox1.Items.Clear();
    var columnNames= from t in typeof(Person).GetProperties() select t.Name;
    foreach (var item in columnNames)
    {
         list.Add(item);
    }
    ListBox1.DataSource = list;
    ListBox.DataBind();
}
asp.net drop-down-menu postback
3个回答
9
投票

您可以将 DropDownList 放入

<asp:UpdatePanel>
并将触发器设置为 DropDownList 的
SelectedIndexChanged
事件。

类似这样的东西(不要忘记脚本管理器)

<asp:ScriptManager ID="ScriptManager1" runat="server" />

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
   <ContentTemplate>
      <asp:DropDownList ID="drop1" runat="server" OnSelectedIndexChanged="ddlTablo_SelectedIndexChanged" />
   </ContentTemplate>
   <Triggers>
      <asp:AsyncPostbackTrigger ControlID="drop1" EventName="SelectedIndexChanged" />
   </Triggers>
</asp:UpdatePanel>

3
投票

您可以使用 asp.net UpdatePanel 或使用 jQuery ajax 发送 ajax 调用。这不会进行回发,并且您的整个页面不会刷新。

UpdatePanel 非常简单且易于使用。 ASP.net ajax 将为您生成 asyn 调用,而 jQuery ajax 可能需要您使用 javascript 呈现 html。


2
投票

在下面的代码片段中,添加此参数:

AppendDataBoundItems="True"

<asp:DropDownList ID="ddlGroupNameFilter" 
    runat="server" 
    AutoPostBack="true" 
    AppendDataBoundItems="true" 
    OnSelectedIndexChanged="ddlLeadgroupName_SelectedIndexChange">
</asp:DropDownList>
© www.soinside.com 2019 - 2024. All rights reserved.