检查第一行GridView



我有一个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;
    }
}

最新更新