C# 更新按钮不会更新DataGridView C上的数据
每当我单击datagridview中的一个数据并使用textbox对其进行更改时,它都不会更新。您想用OdbcDataAdapter和update命令填充数据表 编辑: 以下是您代码的剪辑:C# 更新按钮不会更新DataGridView C上的数据,c#,datagridview,C#,Datagridview,每当我单击datagridview中的一个数据并使用textbox对其进行更改时,它都不会更新。您想用OdbcDataAdapter和update命令填充数据表 编辑: 以下是您代码的剪辑: try { OdbcConnection conn = new OdbcConnection(); conn.ConnectionString = "Dsn=mdc;" + "Uid=root;" + "Pwd=;"; OdbcCommand cmd = ne
try
{
OdbcConnection conn = new OdbcConnection();
conn.ConnectionString =
"Dsn=mdc;" +
"Uid=root;" +
"Pwd=;";
OdbcCommand cmd = new OdbcCommand("UPDATE tbl_delivery SET Address = @Address, AssetNumber = @AssetNumber, Contact = @Contact, DRNumber = @DRNumber, InvoiceNumber = @InvoiceNumber, ItemQty = @ItemQty, PONumber = @PONumber, ReceivedBy = @ReceivedBy, Supplier = @Supplier WHERE No = @No;", conn);
//DataRowView drv = (DataRowView) comboBox1.SelectedValue;
cmd.Parameters.AddWithValue("@No", noTextBox.Text);
cmd.Parameters.AddWithValue("@AssetNumber", assetNumberTextBox.Text);
cmd.Parameters.AddWithValue("@Contact", contactTextBox.Text);
cmd.Parameters.AddWithValue("@DRNumber", dRNumberTextBox.Text);
cmd.Parameters.AddWithValue("@InvoiceNumber", invoiceNumberTextBox.Text);
cmd.Parameters.AddWithValue("@ItemQty", itemQtyTextBox.Text);
cmd.Parameters.AddWithValue("@PONumber", pONumberTextBox.Text);
cmd.Parameters.AddWithValue("@ReceivedBy", receivedByTextBox.Text);
cmd.Parameters.AddWithValue("@Supplier", supplierTextBox.Text);
cmd.CommandType = CommandType.Text;
OdbcDataAdapter ds = new OdbcDataAdapter(cmd);
ds.SelectCommand = cmd;
System.Data.DataTable dtable = new System.Data.DataTable();
ds.Fill(dtable);
tbl_deliveryDataGridView.DataSource = dtable;
conn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("update successful");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
您应该正确设置SelectCommand和UpdateCommand。如果您的查询给出了预期的结果,并且数据在数据库中得到更新,则无法用UPDATE填充datatable。。然后需要重新绑定网格,将更新的数据加载到网格中 让Gv_交付成为您的数据网格,那么代码如下所示:
//here your cmd is set to UPDATE
OdbcCommand cmd = new OdbcCommand("UPDATE tbl_delivery SET Address = @Address, AssetNumber = @AssetNumber, Contact = @Contact, DRNumber = @DRNumber, InvoiceNumber = @InvoiceNumber, ItemQty = @ItemQty, PONumber = @PONumber, ReceivedBy = @ReceivedBy, Supplier = @Supplier WHERE No = @No;", conn);
//here your SelectCommand is set to UPDATE
ds.SelectCommand = cmd;
//here you fill your datatable
ds.Fill(dtable);
更新后要附加到代码的代码将执行。它是否在数据库中更新?您的表名为tbl_delivery,因此我假设网格的名称可能是Gv_delivery。你可以用你的网格的名称来代替这个。我清楚地提到了这个问题。应在cmd.ExecuteNonQuery之后添加语句;
Gv_delivery.Rebind