C# 正确刷新BindingSource

C# 正确刷新BindingSource,c#,winforms,datasource,C#,Winforms,Datasource,我在windows窗体上有一个主细节网格视图。我创建了一个非常简单的存储库(代码中的repo),它查询数据库以获取数据表 首先,我加载数据并定义一个关系,如LoadData()方法中所示。接下来,在编辑主表之后,我想刷新视图数据源。这就是未实现的RefreshData();方法。如果在编辑后刷新,则需要bindingsource不丢失“当前”行 代码如下: public void LoadData() { //define the Bindingsource a

我在windows窗体上有一个主细节网格视图。我创建了一个非常简单的存储库(代码中的repo),它查询数据库以获取数据表

首先,我加载数据并定义一个关系,如LoadData()方法中所示。接下来,在编辑主表之后,我想刷新视图数据源。这就是未实现的RefreshData();方法。如果在编辑后刷新,则需要bindingsource不丢失“当前”行

代码如下:

    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;
    }