如何在插入或更新后更新DataGridview

时间:2016-10-22 12:02:24

标签: c# datagridview

如何在插入或更新的数据网格视图中立即显示数据。我必须重新启动项目以显示该数据。我使用更新()刷新()但不适合我

private void UpdateDebtbutton_Click(object sender, EventArgs e) { SqlConnection conn = ForConnection(); conn.Open(); using (conn) { if (paytextBox.Text != "") { SqlCommand cmd = new SqlCommand("spdebth", conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@id", SqlDbType.Int).Value =customerIDTextBox.Text.ToString(); cmd.Parameters.Add("@text", SqlDbType.Int).Value = paytextBox.Text.ToString(); cmd.ExecuteNonQuery(); MessageBox.Show("Record updated"); spSelectAllCustomerDataGridView.Update(); spSelectAllCustomerDataGridView.Refresh(); conn.Close(); } } }

1 个答案:

答案 0 :(得分:0)

RefreshUpdate方法不用于刷新数据,而是重新绘制WinForms控件。

有一些方法可以在DataGridView中显示更新的数据:

  1. 使用BindingList作为数据源,但这需要一个对象来实现INotifyPropertyChanged
  2. 手动更新DataGridView上的行
  3. 重新绑定DataSource
  4. 以下是第三点的示例:

    private void UpdateDebt(int customerId, int debt)
    {
        var debts = (List<Debt>)spSelectAllCustomerDataGridView.DataSource;
        var item = debts.First(x => x.Id == customerId);
        item.Debt = debt;
    
        spSelectAllCustomerDataGridView.DataSource = null;
        spSelectAllCustomerDataGridView.DataSource = debts;
    }
    

    您必须重新绑定DataGridView才能显示更改。