2014-02-25 128 views
5

DropDownList的SelectedIndexChanged()事件填充页面上的列表框。显然,这将页面发布回服务器。有没有办法让它在没有完全回传的情况下发生?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

您可以将DropDownList放入<asp:UpdatePanel>并在DropDownList上设置AutoPostBack="true"。您必须将触发器设置为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> 
+0

嗨,你能解释一下“AsyncPostbackTrigger”有什么区别吗?对我来说,看起来像没有它,我会得到同样的效果?因为我将第一个下拉菜单设置为AutoPostBack =“true”。 (我在第一个选择什么后更新第二个DDL) –

+0

你可以在这里看到你的问题的答案:http://stackoverflow.com/questions/15330089/difference-between-asyncpostbacktrigger-and-postbacktrigger-on-updatepanel 。基本上,同步回发将发布并加载整个表单,而异步回发仅重新加载页面的一部分。 – slfan

3

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

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

+0

还有什么去? – Jude

+1

可以使用任何类型的ajax(异步调用)。 – Adil

0

在下面的代码片段,加上这个参数:AppendDataBoundItems="True"

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