无法更新 windows 表单应用程序 C# 中的 datagridview 数据

Not able to update datagridview data in windows form application C#

我的 windows 表格申请中有两个表格。我在 form1 中有一个 datagridview,我可以从 form1 更新 datagridview 的数据。现在,我需要从 form2 更新 datagridview。我正在从 form2 调用我用来从 form1 更新 datagridview 的相同方法。

从 form2 调用方法时,在调试中我可以看到它更新了 datagridview 的数据源,但没有更新 UI 上的数据。

我知道这是一个重复问题。我尝试了很多不同的方法。我也尝试过 MdiContainer 的概念,但对我没有用。

我在 form1 中有以下方法,这些方法用于更新 datagridview(CustomerList) 的数据,并在从 form1

调用 BindCustomerList() 方法时更新 UI 上的 datagridview
//form1
public void BindCustomerList()
{
     CustomerList.AutoGenerateColumns = false;
     CustomerList.DataSource = FetchEmpDetails();
     CustomerList.ClearSelection();
}

public DataTable FetchEmpDetails()
{
      if (sqlCon.State == ConnectionState.Closed)
      {
            sqlCon.Open();
      }
      DataTable dtData = new DataTable();
      sqlCmd = new SqlCommand("sp_customers", sqlCon);
      sqlCmd.CommandType = CommandType.StoredProcedure;
      sqlCmd.Parameters.AddWithValue("@ActionType", "FetchData");
      SqlDataAdapter sqlSda = new SqlDataAdapter(sqlCmd);
      sqlSda.Fill(dtData);
      return dtData;
}

我正在使用以下代码从 form2 调用 BindCustomerList(),它更新了 datagridview(CustomerList) 的数据源,但没有更新 form1 中的 UI。

//form2 button click event    
private void btnSave_Click(object sender, EventArgs e)
{
    Form1 form1 = new Form1();    //object of form1 in form2
    this.Close();                 //closing form2 on button click
    form1.BindCustomerList();     //calling form1 method to update datagridview.
}

让您的 form2 构造函数接受一个数据表参数,并将其分配给另一个网格的数据源:

public Form2(DataTable dt){
  InitializeComponent();

  otherDataGridView.DataSource = dt;
}

当您至少调用 BindCustomerList 一次后,在 form1 中创建新的 Form2:

var f = new Form2(CustomerList.DataSource as DataTable);

I am calling BindCustomerList() from form2

不行; bindCustomerList 设置form1的datagridview的DataSource;这与 form2 无关。要让表单共享数据,您必须传递要共享的数据,例如我上面的代码(例如)