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
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.
You can add this line into another function, say
public void MoveDataToUI()
{
this.usersTableAdapter.Fill(this.workOrdersDataSet.users);
}
and after call this function from the even handler, which is raised when someone changes something in another form.
Events tutorial