gridview标题模板中的foreach复选框

时间:2014-09-01 09:08:43

标签: c# asp.net gridview checkbox

我有一个动态网格视图,标题有多个复选框。有没有办法可以单独使用复选框来执行以下操作:

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);");
            }
        }
   }

我无法做到

e.Row.FindControl("checkboxID"); 

因为ID是动态生成的。

1 个答案:

答案 0 :(得分: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;