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();
}
您可以将 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>
您可以使用 asp.net UpdatePanel 或使用 jQuery ajax 发送 ajax 调用。这不会进行回发,并且您的整个页面不会刷新。
UpdatePanel 非常简单且易于使用。 ASP.net ajax 将为您生成 asyn 调用,而 jQuery ajax 可能需要您使用 javascript 呈现 html。
在下面的代码片段中,添加此参数:
AppendDataBoundItems="True"
<asp:DropDownList ID="ddlGroupNameFilter"
runat="server"
AutoPostBack="true"
AppendDataBoundItems="true"
OnSelectedIndexChanged="ddlLeadgroupName_SelectedIndexChange">
</asp:DropDownList>