2012-05-01 68 views
4
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); 
} 

如何在其他表單中進行更改時如何重新加載數據? (最好自動不使用刷新按鈕)?使用TableAdapter重新加載數據

我使用的WinForms和後端是Access 2007中

數據使用的設計到DataGrid結合

+0

你在開玩笑嗎?你的代碼刷新了數據,你在問怎麼做? –

+0

它不令人耳目一新。這就是爲什麼我問 –

+0

你是在其他表單上引用相同的數據集(實例)? –

回答

4

首先,我將在Fill移動到一個單獨的函數:

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

然後,當你做你的Load事件,你會調用該函數:

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

如果你有另一個表單對數據進行更改,你可以在另一個事件中調用這個函數,與此類似。我在我的代碼使用DialogResult

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

在你的代碼爲另一種形式後,你的更新過程完成後,包括一行代碼,告訴你的主要形式更新:

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

使用DialogResult然後,告訴您的主窗體僅在更新實際發生時才觸發Refresh數據。

+0

我做了你的建議,但DataGridView沒有更新。我的按鈕代碼說私人無效buttonNewUser_Click(對象發件人,EventArgs e) {/ *} {NewUserForm nuf = new NewUserForm(); //nuf.Show(); OpenOtherForm(); } –

+0

在你的其他表格上使用DialogResult? – Taryn

+0

我試圖清除表來刷新數據網格我使用sqldata適配器和數據集綁定我可以加載數據,但是當我向數據表中添加新數據我需要刷新,因此它顯示正在添加的新數據我試過數據集。明確();然後我把DataAdapter.Fill(數據集)DataGrid使用Visual Studio中的數據倉庫和數據源綁定,但該方法不起作用,它應該使用Oledb但即時通訊使用SQL Oledb – shawn

1

您可以添加這一行到另一個函數,說

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

並在偶處理程序中調用該函數之後,當某人以另一種形式更改某些內容時引發該函數。

Events tutorial

相關問題