Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新按钮不会更新DataGridView C上的数据_C#_Datagridview - Fatal编程技术网

C# 更新按钮不会更新DataGridView C上的数据

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

每当我单击datagridview中的一个数据并使用textbox对其进行更改时,它都不会更新。

您想用OdbcDataAdapter和update命令填充数据表

编辑:

以下是您代码的剪辑:

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