Вставьте отформатированные значения из DataGridView в базу данных - PullRequest
0 голосов
/ 31 мая 2018

Мои функции форматирования ячеек выглядят следующим образом:

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 голосов
/ 31 мая 2018

В вашем методе dataGridViewCND_CellFormatting вы фактически форматируете значения, которые будут отображаться в виде сетки.

Это фактически не меняет значения в вашем источнике данных (здесь dataTable).Таким образом, источник данных содержит только несформированные данные.

Поэтому, когда вы запрашиваете базу данных, чтобы обновить ее значениями dataTable, база данных тоже не обновляется с отформатированными данными.

Вам нужнообновлять dataTable также при форматировании значений в представлении сетки данных.

update, 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";
          }
      }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...