C# 正确刷新BindingSource
我在windows窗体上有一个主细节网格视图。我创建了一个非常简单的存储库(代码中的repo),它查询数据库以获取数据表 首先,我加载数据并定义一个关系,如LoadData()方法中所示。接下来,在编辑主表之后,我想刷新视图数据源。这就是未实现的RefreshData();方法。如果在编辑后刷新,则需要bindingsource不丢失“当前”行 代码如下:C# 正确刷新BindingSource,c#,winforms,datasource,C#,Winforms,Datasource,我在windows窗体上有一个主细节网格视图。我创建了一个非常简单的存储库(代码中的repo),它查询数据库以获取数据表 首先,我加载数据并定义一个关系,如LoadData()方法中所示。接下来,在编辑主表之后,我想刷新视图数据源。这就是未实现的RefreshData();方法。如果在编辑后刷新,则需要bindingsource不丢失“当前”行 代码如下: public void LoadData() { //define the Bindingsource a
public void LoadData()
{
//define the Bindingsource and 2 Datatables.
binder = new BindingSource();
tbTaxPayers = repo.GetTaxPayersDataTable(-1);
tbLinkedOrganizations = repo.GetTaxPayersLinkedOrganizations();
//create a dataset to define the relation so that the view can pick it up
ds = new DataSet();
ds.Tables.Add(tbTaxPayers);
ds.Tables.Add(tbLinkedOrganizations);
ds.Relations.Add("LinkedOrganizations", tbTaxPayers.Columns["CLI_ID"], tbLinkedOrganizations.Columns["LCC_CLI_ID_PARENT"]);
//set datasource to the main table.
binder.DataSource = tbTaxPayers;
view.LoadData(binder);
}
public void RefreshData()
{
// how to refresh without overhead ? and without losing focus if I just edit ?
}
编辑:
通过执行下一个代码,它可以正常工作,但我必须在每次刷新时创建一个新的数据集。对我来说,它的味道几乎和LoadData()方法一样
为什么要刷新数据?它是否因为您编辑了一些数据而发生更改?您不能只更新用户更改的数据源链接到的对象吗?而不是再次加载数据。我不明白。您的意思是将用户所做操作的“增量”传递回具有主数据只读列表的顶级表单?
public void RefreshData()
{
tbTaxPayers = repo.GetTaxPayersDataTable(-1);
tbLinkedOrganizations = repo.GetTaxPayersLinkedOrganizations();
ds = new DataSet();
ds.Tables.Add(tbTaxPayers);
ds.Tables.Add(tbLinkedOrganizations);
ds.Relations.Add("LinkedOrganizations", tbTaxPayers.Columns["CLI_ID"], tbLinkedOrganizations.Columns["LCC_CLI_ID_PARENT"]);
binder.DataSource = tbTaxPayers;
}