2010-08-04 17 views
0
<ajaxtoolkit:AccordionPane ID="accordianPaneAroundTheCheckbox" runat="server"> 
    <Content> 
     <asp:UpdatePanel ID="updatePanelAroundTheCheckbox" runat="server" > 
      <ContentTemplate> 
       <div> 
        <asp:CheckBox ID="chkFoo" AutoPostBack="true" runat="server" OnCheckedChanged="DoBar"/> 
       </div> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </Content> 
</ajaxtoolkit:AccordionPane> 

我們有類似上面的內容。由於它是一個大頁面,所以額外的東西已經停止。複選框第一次沒有進入OnCheckChanged

我在Page_LoadDoBar開始時放置了一個斷點。第一次點擊複選框時,Page_Load上的斷點被擊中,但DoBar不是。第二次點擊複選框時,兩個斷點都會被擊中。

爲什麼會發生這種情況?我沒有動態生成複選框。它的ClientID每次都是一樣的(沒有動態生成或ID'd容器)。我已經嘗試在Page_Load中重新註冊該活動,但它並未首次出現,隨後再次擊中它。

更新我試着完全刪除UpdatePanel。不僅整個頁面回發,我不想要,但事件仍然沒有輸入。什麼可以阻止/吞下這樣的事件?在主頁面或框架調用的深處還是某處我看不到的地方,是否存在一些異常?

回答

0

複選框沒有被服務器端設置的任何。該表單通過對PageMethod的ajax調用進行填充,從服務器拉取數據包並填充控件。問題是服務器認爲它沒有選中,但JavaScript檢查它。當我沒有選中它時,發生回發,視圖狀態仍然認爲它以前的狀態未被檢查,並且當前狀態現在未被檢查。因此,CheckedChanged事件不會觸發。

Viewstate有一千名可怕的死亡人員。我已經足夠接近解決這個問題了。感謝您的嘗試/尋找。

0

這是你粘貼的正確源代碼嗎?我問,因爲沒有事件叫OnCheckChanged,但是有一個OnCheckedChanged事件。使用你的代碼它工作時的複選框的標記看起來像這樣就好了:

<asp:CheckBox ID="chkFoo" runat="server" AutoPostBack="true" OnCheckedChanged="DoBar"/> 
+0

不,這是一個錯字。我有正確的事件。我假設你使用的代碼不包括更新面板或手風琴。我留下了許多其他的控制權,但這些控制權很可能與此行爲有關。 – 2010-08-05 13:14:07

+0

不,我在裏面添加了一個AccordionPane控件和一個UpdatePanel。當我回到家時,我會在後期發佈消息。現在,如果向觸發器添加觸發器,它會有什麼不同嗎? – Tchami 2010-08-05 13:17:55

+0

我把更新面板放在一起。仍然表現相同。 – 2010-08-05 13:44:39

相關問題