我有一个从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();
}
}
答案 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;
}
}
}