Search code examples
c#sqlwinformsdatasetdataadapter

Reload data using TableAdapter


private void UserList_Load(object sender, EventArgs e)
{
    // TODO: This line of code loads data into the 'workOrdersDataSet.users' table. You can move, or remove it, as needed.
    this.usersTableAdapter.Fill(this.workOrdersDataSet.users);
}

How can I reload the data if changes were made in another form? (preferably automatically without using a Refresh button)?

I am using WinForms and the backend is Access 2007.

The data is bound using the Designer to a Datagrid


Solution

  • First, I would move the Fill to a separate function:

    public void LoadData()
    {
       this.usersTableAdapter.Fill(this.workOrdersDataSet.users);
    }
    

    Then when you do your Load Event, you will call the function:

    private void UserList_Load(object sender, EventArgs e)
    {
       LoadData();
    }
    

    If you have another form that performs changes on the data, you can call this function in another event, similar to this. I use DialogResult in my code:

    private void OpenOtherForm()
    {
        DialogResult openForm = new OtherForm().ShowDialog();
        if(openForm == DialogResult.OK)
            LoadData();
    }
    

    In your code for the other Form after your update process is complete, include a line of code to tell your main form to update:

    private void PerformUpdate()
    {
        try
        {
            // your update code goes here
            DialogResult = DialogResult.OK; // this is the line that tells your other form to refresh
        }
        catch (Exception ex)
        {
            DialogResult = DialogResult.Abort;
        }
    }
    

    using the DialogResult then, tells your main form to trigger the Refresh of the Data only when an Update actually takes place.