我的单元格格式化功能如下:
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;
}
答案 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";
}
}
}
}