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();
}
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>
Asp.net pdatePanel を使用するか、 jQuery ajax を使用して、ajax呼び出しを送信できます。これはポストバックを行わず、ページ全体が更新されません。
UpdatePanelは非常に単純で、使いやすいです。 ASP.net ajaxはasyn呼び出しを生成しますが、jQueryajaxはおそらくjavascriptを使用してhtmlをレンダリングする必要があります。
以下のコードスニペットで、次のパラメータを追加します:AppendDataBoundItems="True"
<asp:DropDownList ID="ddlGroupNameFilter"
runat="server"
AutoPostBack="true"
AppendDataBoundItems="true"
OnSelectedIndexChanged="ddlLeadgroupName_SelectedIndexChange">
</asp:DropDownList>