foreach (DataGridViewRow dgvr in dataGridViewProductList.Rows)
{
string dgvrID = dgvr.Cells["ID"].Value.ToString();
DataRow[] s = DT.Select("BillID = " + dgvrID);
if (s.Length > 0)
{
dataGridViewProductList.Columns["chk"].ReadOnly = false;
dataGridViewProductList.Rows[dgvr.Index].Cells["chk"].ReadOnly = false;
dataGridViewProductList.Rows[dgvr.Index].Cells["chk"].Value = 1;
}
}
运行代码DataGridViewCheckBoxCell
后未更改为已选中,如何更改其已检查状态
我试过
DataGridViewCheckBoxCell cell = (DataGridViewCheckBoxCell)dataGridViewProductList.Rows[dgvr.Index].Cells["chk"];
cell.ReadOnly = false;
cell.TrueValue = true;
cell.Value = cell.TrueValue;
但不起作用。
答案 0 :(得分:1)
建议尝试这样做。在设置true / false值之前,请检查cell.Value
是否为null。如果是,则将其设置为cell.Value = true; or cell.Value = false;
NOT cell.Value = cell.TrueValue/FalseValue;
下面的代码应该在按钮单击时切换(选中/取消选中)第3列中的每个复选框。如果复选框为空,我将其设置为true
。如果我使用cell.Value = cell.TrueValue;
时它的null不起作用。
只是一个想法。
private void button1_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
DataGridViewCheckBoxCell cell = (DataGridViewCheckBoxCell)row.Cells[2];
if (cell.Value != null)
{
if (cell.Value.Equals(cell.FalseValue))
{
cell.Value = cell.TrueValue;
}
else
{
cell.Value = cell.FalseValue;
}
}
else
{
//cell.Value = cell.TrueValue; // <-- Does not work here when cell.Value is null
cell.Value = true;
}
}
}
用于切换复选框值的更紧凑版本 - 删除了检查错误值。
if (cell.Value.Equals(cell.FalseValue))
这个if永远不会被输入,因为未选中的复选框将返回一个null cell.Value,因此这将被前一个if(cell.Value != null)
捕获。换句话说......如果它不为空......那就检查了。
private void button1_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
DataGridViewCheckBoxCell cell = (DataGridViewCheckBoxCell)row.Cells[2];
if (cell.Value != null)
{
cell.Value = cell.FalseValue;
}
else
{
//cell.Value = cell.TrueValue; // <-- Does not work here when cell.Value is null
cell.Value = true;
}
}
}
希望这有帮助。