我正在使用GridView
,因为第一列我有一个CheckBox
- 通过选择此CheckBox
,它的行应保存到数据库中:
foreach (DataGridViewRow row in grid_stock.Rows)
{
c = grid_stock.Rows[i].Cells[0];
b = c.EditedFormattedValue == null ? false : bool.Parse(c.EditedFormattedValue.ToString());
if (b != true)
{
c.Value = true;
//here i am inserting the data to sql.,
}
else
{
c.Value=false;
}
}
但是在这里我没有进入循环,它没有正确检查GridView中的已检查项目......
答案 0 :(得分:2)
以下是您的问题的解决方案:
foreach (DataGridViewRow row in grid_stock.Rows)
{
var _value = row.Cells[0].Value;
if (_value != null && !(bool)_value)
{
c.Value = true;
//here i am inserting the data to sql.,
}
else
{
c.Value = false;
}
}
实际上你错过了.Value
row.Cell[0]
,因此变量c
将保留DataGridViewCheckBoxCell
,而不是值包含。
答案 1 :(得分:0)
您正在混合foreach
循环和for
循环。它应该是:
foreach (DataGridViewRow row in grid_stock.Rows)
{
c = row.Cells[0];
// ...
}
答案 2 :(得分:0)
试试这个,
foreach (DataGridViewRow row in grid_stock.Rows)
{
DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell) row.Cells[0];
chk.Value = !(chk.Value == null ? false : (bool) chk.Value);
}
或者您可以通过这种方式获得支票价值,
if (Convert.ToBoolean(chk.Value) == true)
{
MessageBox.Show("Value Is True");
}
答案 3 :(得分:0)
int j = 0;
foreach (DataGridViewRow row in grid_stock.Rows)
{
bool vc = Convert.ToBoolean(grid_stock.Rows[j].Cells[0].Value);
if (vc == true)
{
//Here my inserting to sql db
j++;
}
}
else
{
j++;
}