DataGridViewCheckBoxColumn GvCheckBox = new DataGridViewCheckBoxColumn();
doWork.HeaderText = "Approved Cheque";
doWork.FalseValue = "0";
doWork.TrueValue = "1";
GvViewPendingCheque.Columns.Insert(0, doWork);
GvViewPendingCheque.DataSource = objDataSet.Tables[0];
其工作正常复选框列已添加到带有数据库数据的网格中, 我想更新复选框检查的所有行的数据
MyTable列:PaymentStatus MyTable数据:待定
当管理员检查时,复选框PaymentStatus将更新为Approved而不是Pending 请帮我, 我试过这段代码,但它不起作用:
foreach (DataGridViewRow row in GvViewPendingCheque.Rows)
{
if ((bool)row.Cells[doWork.Name].Value == true)
{
MessageBox.Show("True");
}
else
{
MessageBox.Show("Failed...");
}
}
和
if ((bool)this.GvViewPendingCheque.Rows[0].Cells[0].Value == true)
{
MessageBox.Show("True");
}
else
{
MessageBox.Show("False");
}
只是想知道如何获取复选框'检查'行
答案 0 :(得分:1)
您将错误和真实值设置为" 0"和" 1"分别。但是将字符串转换为布尔值就像你在foreach
循环中尝试做的那样,会抛出一个FormatException
。
另一方面,将数字0和1转换为布尔值将返回false
和true
。
DataGridViewCheckBoxColumn GvCheckBox = new DataGridViewCheckBoxColumn();
GvCheckBox.FalseValue = 0; // replaced "0"
GvCheckBox.TrueValue = 1; // replaced "1"
答案 1 :(得分:0)
你可以使用:
if (Convert.ToBoolean(this.GvViewPendingCheque.Rows[0].Cells[0].Value) == true)
...
但我确定这是否是访问数据网格视图中单元格的正确方法。 更简单的方法来访问单元格[行,列]:
if (Convert.ToBoolean(this.GvViewPendingCheque[0,0].Value) == true)
答案 2 :(得分:0)
如果将单元格转换为DataGridViewCheckBoxCell,那么您应该能够使用checked属性来查看是否已选中
cell1.checked == true