2011-05-03 351 views
7

我想一起使用一些AJAX和ASP.Net,使我能夠運行的功能,而不必刷新整個頁面,但我偶然發現這樣做的問題ASP.NET DropDownList OnSelectedIndexChanged事件沒有被觸發

這裏是我的代碼

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <asp:DropDownList ID="ddl1" runat="server" OnSelectedIndexChanged="update1" /> 

     <asp:TextBox runat="server" ID="txt1" /> 

    </ContentTemplate> 
</asp:UpdatePanel> 

而這裏的背後

Sub update1(ByVal sender As Object, ByVal e As EventArgs) 

    txt1.Text = Now.ToString 

End Sub 

我的代碼不會觸發事件,因爲我沒有AutoPostBack="True"我的DDL,但增加不到ddl將回發整個頁面。

有沒有辦法避免使用AutoPostBack="True",以便它只更新面板?

我知道我可以使用一個asp:Button來解決這個問題,但我真的希望能夠如果你想避免整個視圖狀態發送給使用DDL與OnSelectedIndexChanged

感謝

+0

確定AutoPostBack =「True」回發整個頁面? – 2011-05-03 10:27:53

+2

添加autopostback ='true'不應該回發整個頁面(至少頁面不會flickr) - 它應該只更新更新面板的內容? – Paddy 2011-05-03 10:28:41

回答

7

服務器,你應該看看callbacks

相反,如果你想避免整個頁面的刷新,但回發,這應該工作:

<asp:DropDownList ID="ddl1" runat="server" OnSelectedIndexChanged="update1" AutoPostBack="True" /> 

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <Triggers> 
     <asp:AsyncPostbackTrigger ControlID="ddl1" EventName="SelectedIndexChanged" /> 
    </Triggers> 
    <ContentTemplate> 
     <asp:TextBox runat="server" ID="txt1" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 
+0

謝謝,效果很好 – 2011-05-03 10:37:25

+0

AutoPostBack =「True」。謝謝。我討厭使用UpdatePanels(我更喜歡JQuery),所以我覺得我會回到過去。但這是我今天需要的。給予好評。 – granadaCoder 2013-03-12 15:07:01

+0

爲什麼這個答案沒有被其他地方給出,而且一個類似的問題已經被問到完全超出了我的意思。正是我在找什麼。謝謝。 – samuelesque 2014-10-01 15:43:24

0

嘗試用相同的代碼和不同的頁面名稱創建一個新的頁面。爲我工作

+1

請評論或改進 – 2015-11-25 08:21:06

相關問題