我有一个gridview
,显示了sql
表中的大量行。我在gridview
标题中也有checkbox
chkboxSelectAll
,以检查gridview
中的所有行。
chkboxSelectAll
oncheckedchange
的代码:
protected void chkboxSelectAll_CheckedChanged(object sender, EventArgs e)
{
CheckBox ChkBoxHeader = (CheckBox)Grid.HeaderRow.FindControl("chkboxSelectAll");
foreach (GridViewRow row in Grid.Rows)
{
CheckBox ChkBoxRows = (CheckBox)row.FindControl("chkrow");
if (ChkBoxHeader.Checked == true)
{
ChkBoxRows.Checked = true;
}
if (ChkBoxHeader.Checked == false)
{
ChkBoxRows.Checked = false;
}
}
}
但是,我只想在检查标头复选框后检查前5行GridView。
我搜索过的所有答案都是数据集或数据集,但没有人用于GridView本身。
有什么方法可以做到这一点。任何帮助将不胜感激。!!
如果第二个评论的答案是正确的,那么这将是您的解决方案(例如):
protected void chkboxSelectAll_CheckedChanged(object sender, EventArgs e)
{
CheckBox ChkBoxHeader = (CheckBox)Grid.HeaderRow.FindControl("chkboxSelectAll");
bool sign = ChkBoxHeader.Checked == true;
int counter = 0;
foreach (GridViewRow row in Grid.Rows)
{
CheckBox ChkBoxRows = (CheckBox)row.FindControl("chkrow");
ChkBoxRows.Checked = sign;
counter++;
if (counter == 5)
{
break;
}
}
}
您可以使用linq做到这一点:
foreach (GridViewRow row in Grid.Rows.Take(5))
{
CheckBox ChkBoxRows = (CheckBox)row.FindControl("chkrow");
if (ChkBoxHeader.Checked == true)
{
ChkBoxRows.Checked = true;
}
if (ChkBoxHeader.Checked == false)
{
ChkBoxRows.Checked = false;
}
}