问题
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
回答1:
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.
回答2:
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
来源:https://stackoverflow.com/questions/10403150/reload-data-using-tableadapter