2011-10-21 52 views
1

我試圖從Page_PreRender後面的代碼中設置htmltablecell.innerHTMLASP.NET Page_PreRender方法

它在第一次設置時正常工作。

此後我需要將引用設置爲一個字符串中的新值(我已檢查字符串值是否已更改),但它始終在HTML輸出中顯示舊值。

當我調試htmltablecell.innerHTML時,我還可以看到值已更改。

該值設置爲Page_PreRender方法的原因是我有一個用戶控件,在Page_load已觸發後更新字符串。

+0

如果可能,發佈aspx標記和pagerender代碼的一部分 – Jags

回答

2

當被訪問的控件(本例中爲HtmlTableCell)位於UpdatePanel之外時,如果回發是異步的(從UpdatePanel中的控件觸發),可能會發生什麼情況。

如果情況並非如此,則不予理會。

編輯

你有兩個選擇。

您可以在啓動異步回發的UpdatePanel中設置控件,以執行標準回發。爲此,在UpdatePanel中定義一個PostBackTrigger,將ControlID設置爲您希望執行回發的控件的ID。

(因爲這將執行完整的回發時,HtmlTableCell屆時將訪問修改)

<asp:UpdatePanel ... > 
    ... 
    <Triggers> 
     <asp:PostBackTrigger ControlID="ControlIDToPostBack" /> 
    </Triggers> 
</asp:UpdatePanel> 

或者你也可以添加HtmlTableCell(與父行,表等),你想更新到另一個UpdatePanel將UpdatePanel的UpdateMode屬性都設置爲Always。

這將確保UpdatePanel控件中的內容針對源自頁面的所有回發進行更新。其中包括異步回發。

<asp:UpdatePanel ... UpdateMode="Always"> 

希望這會有所幫助。

+0

你是對的,回發是異步的。有沒有任何解決方案? – Millerbean