2011-04-01 40 views
0

我有一個數據網格顯示來自sql server的數據。我有一個添加按鈕,單擊它時會打開一個新窗口,用戶可以在其中添加正在添加的新項目的信息。當用戶點擊保存時,數據將被保存到數據庫,但不會顯示在網格中。有什麼方法可以在添加窗口關閉時使數據網格綁定?讓我知道是否需要更多信息。謝謝。關閉窗口時重新綁定數據網格

在我的主窗口,包含DataGrid的代碼,我有一個添加按鈕:

private void btnAdd_Click(object sender, RoutedEventArgs e) 
{ 
     showAddWindow(); 
} 

而且,showAddWindow方法是:

private void showAddWindow() 
{ 
    add addWindow = new add(dgDataView); 
    addWindow.Owner = this; 
    addWindow.WindowStartupLocation = WindowStartupLocation.CenterOwner; 
    addWindow.ShowDialog(); 
} 
+0

Winforms或webforms? – stuartd 2011-04-01 14:31:10

+0

什麼是你的網格?一個'DataSet'?或直接到DB?或者是什麼? – 2011-04-01 14:31:47

+0

winforms並綁定到數據集 – 2011-04-01 14:35:41

回答

0

假設這是的WinForms:

首先,在調用「添加」窗口時,使用ShowDialog()而不是Show()

在使用DataGrid的主要形式的代碼看起來像

private void btnAdd_Click(Object sender, EventArgs e) 
{ 
    DialogResult b = frmAdd.ShowDialog(); 
    if(b == DialogResult.Ok) 
    { 
    // code to re-bind the grid here. 
    } 
} 
在frmAdd形式

,你將需要更新數據庫後您的保存按鈕設置的DialogResult的形式是DialogResult.Ok。

我猜你已經嘗試是沿着線: 私人無效btnAdd_Click(對象發件人,EventArgs的){ frmAdd.ShowDialog(); //代碼在這裏重新綁定網格。 }

區別在於,使用ShowDialog()調用時,主窗體將等待直到「添加」窗體關閉才能繼續執行。在我的第二個代碼示例中,只需使用Show(),在用戶有機會更新數據之前,會在顯示「添加」表單後立即重新綁定網格代碼。

(注意,我沒有說的代碼了我的頭頂部,而不是在Visual Studio中,因此它可能有錯誤)

1

如果你知道新插入的對象的ID,那麼你可以將它發送到主窗體,並使用新的信息調用網格上的Add.Row。這樣你就不會回調數據庫來重新綁定。

+0

我對此投票,因爲如果數據是大量數據並且性能是一個因素,這將是明智之舉。但是這種方法意味着要添加額外的代碼來讀取「添加」表單中的值並手動添加該行。這是簡單性和性能之間的折衷。在採取這種方法之前,我將衡量性能優勢與增加的複雜性之間的關係,因爲增加的複雜性意味着錯誤的可能性更大(因爲我們的程序員是易犯錯的人)。我的方法使代碼更簡單,但如果表單拉取大量數據,則可能會出現性能問題。 – David 2011-04-01 14:39:51

+0

當新項目被添加時,它被分配一個新的ID。如果可能的話,我試圖保持這種簡單,所以我試圖通過一切手段來避免更復雜的大聲笑......但是,我會做我需要的,以便它的工作 – 2011-04-01 14:45:08