如何将gridview中的已检查行保存到sql数据库

时间:2013-12-30 07:59:05

标签: c# winforms gridview

我正在使用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中的已检查项目......

4 个答案:

答案 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++;
                }