2014-09-01 43 views
2

我有一個動態的網格視圖,標題有多個複選框。有沒有一種方法,我可以得到的複選框單獨做一些這樣的:因爲是動態生成的ID,我不能做gridview的foreach複選框頭模板

e.Row.FindControl("checkboxID"); 

protected void gvUsers_OnRowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.Header) 
     { 
      foreach (CheckBox cb in e.Row.Controls) //<- is there something like this? 
      { 
       cb.Attributes.Add("onclick", "javascript:SelectAll(this);"); 
      } 
     } 
    } 

回答

2

你可以使用OfType

var allCheckBoxes = e.Row.Cells.Cast<DataControlFieldCell>() 
    .SelectMany(c => c.Controls.OfType<CheckBox>()); 
foreach (CheckBox cb in allCheckBoxes) 
{ 
    cb.Attributes.Add("onclick", "javascript:SelectAll(this);"); 
} 

您需要添加using System.Linq

在查詢語法,如果你發現更易讀:

var allCheckBoxes = from cell in e.Row.Cells.Cast<DataControlFieldCell>() 
        from cb in cell.Controls.OfType<CheckBox>() 
        select cb; 
+0

它的工作!謝謝!驚人。 – 2014-09-01 09:29:52