c# - 无法在 Windows 窗体应用程序 C# 中更新 datagridview 数据
问题描述
我的 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 构造函数接受一个数据表参数,并将其分配给另一个网格的 DataSource:
public Form2(DataTable dt){
InitializeComponent();
otherDataGridView.DataSource = dt;
}
当您在 form1 中创建一个新的 Form2 时,至少已经调用了 BindCustomerList 一次:
var f = new Form2(CustomerList.DataSource as DataTable);
我从 form2 调用 BindCustomerList()
它不起作用;bindCustomerList 设置form1的datagridview的DataSource;这与form2无关。要让表单共享数据,您必须传递要共享的数据,例如在我上面的代码中(例如)
推荐阅读
- mysql - 通过 NodeJS + MySQL 登录时捕获异常错误
- php - 使用while循环获取数据库结果时,如何跳转到第三行并获取数字
- mapbox - 地图框不显示多边形
- ubuntu - 在 ubuntu 18.04 中取消隐藏工作区切换器
- c# - 使用 StreamWriter Async 时出现错误“流当前正在被流上的先前操作使用”
- javascript - ajax 执行后 firefox 将所有表单字段显示为错误
- asp.net - 类似于 Asp.Net Core Razor Pages 中 WebForms 的 LoginView
- c++ - View 如何在幕后更新?
- azure - 如何使用 Httptrigger 函数每 5 分钟调用一次 functionapp?
- angular - Service Worker 和客户端证书