2012-05-15 39 views
0

我通過從System.Web.UI.WebControls.TemplateField派生它創建了自定義複選框模板字段。該字段的模板是通過創建實現ITemplate接口的類創建的。當頁面發生回發時,複選框中的值將丟失。在自定義模板字段中回發後複選框丟失狀態

爲了使這個工作暫時我用viewstate存儲複選框列中的複選框的狀態,但進一步我想完全避免這一點,因爲我將在我的應用程序中以相同的方式使用更多的模板字段。

請讓我知道我是否缺少任何東西。

以下是代碼:

namespace MyControls 
{ 
    public class CheckBoxTemplateField : TemplateField 
    { 
     public CheckBoxTemplateField() 
     { 
      this.HeaderTemplate = new CheckBoxTemplate(); 
      this.ItemTemplate = new CheckBoxTemplate(); 
     } 
    } 

    public class CheckBoxTemplate : ITemplate 
    { 
     public void InstantiateIn(Control container) 
     { 
      CheckBox chk = new CheckBox(); 
      container.Controls.Add(chk); 
     } 
    } 
} 

問候, 拉夫

+1

實際上我剛剛發現,構造函數中的ItemTemplate - 是獲取TemplateField列以在回發中正確保留的唯一方法。我不得不看看你的代碼的其餘部分,以找出爲什麼你會丟失複選框的狀態,但它適用於我。 –

回答

0

複選框與他們的問題保持其價值在回發

1解決方案是其值存儲在隱藏fiesld和已知在服務器中讀取它。

p.s.這與viewstate.input控件無關,並不保存它們在viewstate中的值(帶有'ontextchange'事件的excpet文本框)

+0

隱藏字段或視圖狀態是類似的事情。我不想手動這樣做,因爲問題不僅限於複選框,我將來必須使用不同類型的模板字段,這些字段可能包含下拉菜單等。 – Gaurav

相關問題