我有一个动态网格视图,标题有多个复选框。有没有办法可以单独使用复选框来执行以下操作:
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是动态生成的。
答案 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;