以编程方式编辑 DataGridView 后,C# 更新 MySql

C# Update MySql after edited DataGridView programmatically

我在将数据从 DataGridView 保存到 MySql 数据库时遇到问题。

当我将新值插入 DataGridView 选定行的 Cell 并按下按钮 buttonSalvaContatore 时,数据不会保存在数据库中。

怎么了?

这是我填的时候DataGridView

const string queryRicerca = "SELECT * FROM colori ORDER BY id_colore ASC";
using (daColori = db.ExecuteDataAdapter(queryRicerca))
{

    mySqlCommandBuilder = new MySqlCommandBuilder(daColori);
    daColori.UpdateCommand = mySqlCommandBuilder.GetUpdateCommand();
    daColori.InsertCommand = mySqlCommandBuilder.GetInsertCommand();

    daColori.SelectCommand.CommandType = CommandType.Text;
    dsColori = new DataSet();t
    daColori.Fill(dsColori, "colori"); 
    bSource.DataSource = dsColori.Tables["colori"];
    dataGridColori.DataSource = bSource;
    dataGridColori.Columns[0].HeaderText = "Codice";
    ((DataGridViewTextBoxColumn)dataGridColori.Columns[0]).MaxInputLength = 2;
    dataGridColori.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
    dataGridColori.Columns[1].HeaderText = "Descrizione";
    dataGridColori.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
}

这是我的按钮

private void buttonSalvaColore_Click(object sender, EventArgs e)
{
    if (dataGridColori.CurrentRow != null)
    {

        dataGridColori.CurrentRow.Cells[0].Value = textBoxCodiceColore.Text;
        dataGridColori.CurrentRow.Cells[1].Value = textBoxDescColore.Text;

        daColori.Update(dsColori,"colori");

    }
}

尝试在更新DataGridView后调用EndEdit来更新您BindingSource的所有未决更改。

dataGridColori.CurrentRow.Cells[0].Value = textBoxCodiceColore.Text;
dataGridColori.CurrentRow.Cells[1].Value = textBoxDescColore.Text;
bSource.EndEdit();
daColori.Update(dsColori,"colori");

供参考:BindingSource.EndEdit() Method