2014-09-02 74 views
0

我有一個GridView,它在GridView的headerTemplate中動態地填充複選框。標題是複選框和動態文本/標籤。但是我不能讓HeaderTemplate中顯示的文本:GridView中的動態複選框旁邊的文本

pageLoad的:

foreach (Module m in listModule) 
     { 
      TemplateField tfield = new TemplateField(); 
      CheckBox cbAll = new CheckBox(); 
      tfield.HeaderTemplate = new TickColumn(); 
      tfield.HeaderText = m.ModuleName; //<- This is not getting displayed. 
      gvUsers.Columns.Add(tfield); 
     } 

class TickColumn : ITemplate 
    { 
     public void InstantiateIn(System.Web.UI.Control container) 
     { 
      CheckBox cbAll = new CheckBox(); 
      cbAll.ID = "cbAll"; 
      container.Controls.Add(cbAll); 
     } 
    } 

出於某種原因,是沒有得到顯示的HeaderText。

或者 我試圖在類中添加一個標籤,但在那裏,我不知道是如何傳遞的價值:

static string lblname; 

pageLoad的:

foreach (Module m in listModule) 
     { 
      TemplateField tfield = new TemplateField(); 
      CheckBox cbAll = new CheckBox(); 
      tfield.HeaderTemplate = new TickColumn(); 
      lblname = m.ModuleName; 
      gvUsers.Columns.Add(tfield); 
     } 


class TickColumn : ITemplate 
    { 
     public void InstantiateIn(System.Web.UI.Control container) 
     { 
      CheckBox cbAll = new CheckBox(); 
      Label lbl = new Label(); 
      lbl.Text = lblName; 
      cbAll.ID = "cbAll"; 
      container.Controls.Add(cbAll); 
      container.Controls.Add(lbl); 
     } 
    } 

有了這個代碼,每個動態列標籤的文本變得相同,最後一個元素名稱將顯示在所有標籤中。我該如何解決這個問題?

回答

0

我意識到我可以使用構造實際上傳遞值:

class TickColumn : ITemplate 
    { 
private String _label; 
     public TickColumn(String p_label) 
     { 
      this._label = p_label; 
     } 
     public void InstantiateIn(System.Web.UI.Control container) 
     { 
      CheckBox cbAll = new CheckBox(); 
      cbAll.ID = "cbAll"; 
      cbAll.Text = this._label; 
      container.Controls.Add(cbAll); 
     } 
    }