2011-01-11 51 views
0

我有這個問題 - 我正在處理沒有.net 3.5的服務器上的ASP.NET AJAX應用程序,這意味着我無法使用ListView(BOO!)。使用runat服務器標記持久化html控件內容

我決定簡單地做一個醜陋的方式來創建一個表,並給tbody一個ID和一個runat服務器標籤,並將HtmlControls從代碼隱藏裏面(順便說一句 - 這是一個用戶控件,以防有所作爲) 。

這一切工作正常 - 直到頁面做部分回發 - 並且所有元素消失,因爲標籤是runat服務器我假設它需要在頁面加載中重新填充。

難道沒有辦法在部分回傳中實際保留數據嗎?只有當我在後端這麼說時,控件的內容纔會發生變化?

我想我可以在填充控件時將內容保存在會話對象中,然後在會話對象的Page_Load中重新填充 - 但我希望有更好的方法來做到這一點?

+1

不知道你在輸出什麼,但是如果你想要一個在NET 2.0中工作的服務器控件並且輸出爲一個表,那麼你可以使用GridView嗎? – 2011-01-11 10:12:33

回答

0

如果您的問題與保存狀態有關。該ControlState就是這樣做的正確的地方..

從MSDN考慮這個(http://msdn.microsoft.com/en-us/library/1whwt1k7.aspx)

,或者嘗試下面的代碼。

protected override object SaveControlState() 
    { 
     object[] ControlStateData = new object[]; 
     //save your data like ControlStateData[0] = ActivePage; 
     return ControlStateData; 
    } 

    protected override void LoadControlState(object savedState) 
    { 
     object[] ControlStateData = savedState as object[]; 
     //Load your data like ActivePage = (int) ControlStateData[0]; 
     base.LoadControlState(ControlStateData[2]); 
    } 

    //Dont forget to add this procedure 
    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 
     Page.RegisterRequiresControlState(this); 
    }