获取GridView中复选框的选中值

时间:2016-09-08 20:45:13

标签: .net gridview checkbox

我有一个从XML文件填充的GridView。我在此列表中添加了一个id = chkRow列。有超过100条记录/行。

我最终要做的是将用户可以点击的行数/复选框数限制为三个。

我已经成功地想出了每次更改复选框时如何递增整数 - 但即使取消选中它也会继续递增。

现在,我想要做的是当所选行为Checked = true时递增,而当Checked = false时递减。

我无法弄清楚如何获取刚刚单击的复选框的选中状态。

当我点击任何复选框时,此代码抛出NullReferenceException。

protected void MyCheckBoxes_SelectedIndexChanged(object sender, EventArgs e)
        {  
             CheckBox chk1 = (CheckBox)GridView1.HeaderRow.FindControl("chkRow");
                Label1.Text = mycount.ToString();
                if(chk1.Checked == true)

                       {
                           Increment();
                       }

        }

2 个答案:

答案 0 :(得分:0)

试试这个。 (假设您的复选框位于第一列)

        private void dataGridView1_CellContentClick(object sender,DataGridViewCellEventArgs e)
        {
        int checks = 0;
        foreach (DataGridViewRow Row in dataGridView1.Rows)
        {
            if (Convert.ToBoolean(Row.Cells[0].Value) == true)
                checks++;
        }   
            if (checks == 3  && Convert.ToBoolean(dataGridView1.CurrentCell.Value == false)
                return;
        }

答案 1 :(得分:0)

您可以找到复选框:

int  checks=0;
 foreach (GridViewRow row in GridView1.Rows)
{
    if (row.RowType == DataControlRowType.DataRow)
    {
        CheckBox chkRow = (row.Cells[0].FindControl("chkRow") as CheckBox);
        if (chkRow.Checked)
        {

                checks++;
        }   
            if (checks == 3)
                return;
        }
    }
}