2014-02-25 127 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> 
相關問題