【问题标题】:How DropDownList's SelectedIndexChanged() works without PostBack?DropDownList 的 SelectedIndexChanged() 如何在没有 PostBack 的情况下工作?
【发布时间】:2014-03-28 03:52:40
【问题描述】:

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


    【解决方案1】:

    您可以将 DropDownList 放入 &lt;asp:UpdatePanel&gt; 并将触发器设置为 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>
    

    【讨论】:

    • 嗨,你能解释一下“AsyncPostbackTrigger”有什么区别吗?在我看来,如果没有它,我会得到同样的效果吗?因为我将第一个下拉菜单设置为 AutoPostBack="true"。 (我在第一个选择之后更新了第二个 DDL)
    • 您可以在此处查看问题的答案:stackoverflow.com/questions/15330089/…。基本上,同步回发将发布并加载整个表单,而异步回发只会重新加载页面的一部分。
    • @slfan 您说要在 DropDownList 上设置AutoPostBack="true",但在示例中不要这样做。哪个是对的?
    • @MaxVoisard。你是对的,不需要 AutoPostBack,因为我们有 AsyncPostbackTrigger。我更新了我的答案
    【解决方案2】:

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

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

    【讨论】:

    • 可以使用任何类型的 ajax(异步调用)。
    【解决方案3】:

    在下面的代码sn-p中,添加这个参数:AppendDataBoundItems="True"

    <asp:DropDownList ID="ddlGroupNameFilter" 
        runat="server" 
        AutoPostBack="true" 
        AppendDataBoundItems="true" 
        OnSelectedIndexChanged="ddlLeadgroupName_SelectedIndexChange">
    </asp:DropDownList>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多