web-dev-qa-db-ja.com

DropDownListのSelectedIndexChanged()はPostBackなしでどのように機能しますか?

DropDownListのSelectedIndexChanged()イベントは、ページのリストボックスを埋めます。明らかに、これはページをサーバーにポストバックします。完全なポストバックなしでそれを実現する方法はありますか?

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();
}
6
Jude

DropDownListを<asp:UpdatePanel>に入れ、AutoPostBack="true"を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>
8
slfan

Asp.net pdatePanel を使用するか、 jQuery ajax を使用して、ajax呼び出しを送信できます。これはポストバックを行わず、ページ全体が更新されません。

UpdatePanelは非常に単純で、使いやすいです。 ASP.net ajaxはasyn呼び出しを生成しますが、jQueryajaxはおそらくjavascriptを使用してhtmlをレンダリングする必要があります。

3
Adil

以下のコードスニペットで、次のパラメータを追加します:AppendDataBoundItems="True"

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