无法更新 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 无关。要让表单共享数据,您必须传递要共享的数据,例如我上面的代码(例如)
我的 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 无关。要让表单共享数据,您必须传递要共享的数据,例如我上面的代码(例如)