将格式化的值从DataGridView插入DataBase

时间:2018-05-31 08:23:44

标签: c# datagridview

我的单元格格式化功能如下:

private void dataGridViewCND_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex == 2)
    {
        if (e.Value != null)
        {
            if (e.Value.ToString().Contains("S010"))
            {
                e.Value = "BE";
            }
            else if (e.Value.ToString().Contains("S011"))
            {
                    e.Value = "BI";
            }
        }
    }
}

当我更新时,非格式化的值将插入到我的数据库中,而不是格式化的值。

编辑: 这是我在数据库中插入的代码:

private void buttonEnregistrer_Click(object sender, EventArgs e)
{
    dataGridViewCND.EndEdit();
    dataAdapter.Update(dataTable);
    DataBind();
}

这是我的DataBind()函数

private void DataBind()
{
    dataGridViewCND.DataSource = null;
    dataTable.Clear();
    string query = "SELECT xxxxxxxxxxxx FROM xxxxxxxxxxxx";
    SqlConnection con = new SqlConnection(conStringLocal);
    con.Open();
    SqlCommand command = con.CreateCommand();
    command.CommandText = query;
    dataAdapter = new SqlDataAdapter(query, con);
    commandBuilder = new SqlCommandBuilder(dataAdapter);
    dataAdapter.Fill(dataTable);
    bindingSource = new BindingSource { DataSource = dataTable };
    dataGridViewCND.DataSource = bindingSource;
}

1 个答案:

答案 0 :(得分:0)

dataGridViewCND_CellFormatting方法中,您实际上是格式化将在网格视图中显示的值。

这实际上并没有更改数据源中的值(此处为dataTable)。因此,数据源仅保留未配制的数据。

因此,当您查询数据库以使用dataTable的值更新数据库时,数据库也无法使用格式化数据进行更新。

当您在数据网格视图上格式化值时,您还需要不断更新dataTable

更新,dataGridViewCND_CellFormatting如下所示。

private void dataGridViewCND_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
  if (e.ColumnIndex == 2)
  {
      if (e.Value != null)
       {
          if (e.Value.ToString().Contains("S010"))
          {
              dataTable.Rows[e.ColumnIndex][e.RowIndex] = "BE";
              e.Value = "BE";
          }
          else if (e.Value.ToString().Contains("S011"))
          {
              dataTable.Rows[e.ColumnIndex][e.RowIndex] = "BI";
              e.Value = "BI";
          }
      }
  }
}