首先,我想询问如何从另一个表单刷新Datagrid视图,因为在下面的代码中我无法从第二个表单刷新它。
这是我刷新“收银员交易表格”中的数据网格视图的方式。
public void loadData()
{
var load = (from x in db.tbltransaction
join z in db.tblproduct
on x.product_ID equals z.ID
where x.status.Equals(0)
select new
{
TransactionID = x.belanjaID,
ProductID = x.produk_ID,
ProductName = z.namaBarang,
quantity = x.jumlahBarang,
Subtotal = x.subtotal
});
dgvtransaction.DataSource = load;
dgvtransaction.Columns[0].Visible = false;
}
罗。我想要做的是当我以第二种形式添加数据并关闭它(因此事件是 FormClosed “收银员搜索产品表格“”可以在“收银员交易表格”中加载“dgvtransaction”。
到目前为止,这是第二个表单上的代码,在关闭后的第一个dgv上加载数据。)
Cashier Transaction Form pk;
private void Cashier Search Product Form_FormClosed(object sender, FormClosedEventArgs e)
{
pk.loadData();
}
错误是“对象引用未设置为对象的实例。”
感谢您的帮助。
答案 0 :(得分:0)
您正在创建父表单的新实例,但您需要传递对原始表单的引用。
public class CashierSearchProductForm
{
CashierTransactionForm pk;
public CashierSearchProductForm(CashierTransactionForm pk)
{
this.pk = pk;
}
private void CashierSearchProduct Form_FormClosed(object sender, FormClosedEventArgs e)
{
pk.loadData();
}
...
}
...
var csp = new CashierSearchProductForm(this);
更好的是,只需从原始表单订阅FormClosed事件:
var csp = new CashierSearchProductForm(this);
csp.FormClosed += (s,e) => pk.loadData();