2011-06-13 194 views
0

我是一個開發這個UI,有3個按鈕。一個按鈕處理2個不同按鈕的相同事件,取決於哪個按鈕被點擊

  1. 刪除
  2. referesh過程
  3. 節省

用戶選擇任意2個按鈕的從數據網格和點擊的行,即,刪除或刷新的過程,但直到並且除非用戶按下保存按鈕,更改不會保存到數據庫中。

我正在考慮刪除和刷新過程中有相同的保存按鈕,這取決於用戶點擊了哪個按鈕,UI將調用存儲過程。

該應用程序在C#上,WPF。

請給我一些想法,我該如何處理這個或其他建議。

+0

將保存邏輯封裝到方法中,並根據需要在點擊中調用它! – V4Vendetta 2011-06-13 07:17:51

+0

如果用戶單擊刪除,然後刷新然後保存同一行,該怎麼辦? :) – 2011-06-13 07:26:45

+0

如果用戶單擊首先刪除然後刷新過程。刷新按鈕被點擊時刪除的行添加到gridview? – Azodious 2011-06-13 07:28:20

回答

0

假設你有選定的行。你可以有global boolean variable isDeleteClicked。當用戶點擊刪除按鈕,在其事件處理程序,您可以設置isDeleteClicked = true;當用戶點擊刷新過程按鈕,在按鈕的事件處理程序,你可以做isDeleteClicked = false;當保存按鈕被點擊,在其事件處理程序,你可以做

if(isDeleteClicked) 
{ 
//call SP for delete work 
} 
else 
{ 
//call SP for refresh work 
} 

或者另一個選項可能是創建一個枚舉值,例如三個值。

public enum OperationSelected 
    { 
     DeleteClicked, 
     RefreshProcessClicked, 
     NoneClicked 
    } 

創建opSelected像OperationSelected opSelected = OperationSelected.NoneClicked;刪除按鈕事件處理函數中執行

opSelected = OperationSelected.DeleteClicked; 

在刷新過程中的按鈕事件處理函數中執行

opSelected = OperationSelected.RefreshProcessClicked; 

在Save按鈕的事件處理程序做

全局枚舉變量
if (opSelected.ToString() == OperationSelected.DeleteClicked.ToString()) 
    { 
    //call SP for delete work 
    } 
    else if (opSelected.ToString() == OperationSelected.RefreshProcessClicked.ToString()) 
    { 
    //call SP for refresh work 
    } 
+0

您將如何知道選擇了刪除還是刷新行? – 2011-06-13 07:34:12

0

最簡單的方法是隻保存點擊哪個按鈕,選擇哪一行並在保存處理程序中處理這些數據。 單擊刪除或刷新將覆蓋兩個標誌(whichButton和gridRow)。基於哪個按鈕的值,您的保存處理程序將執行相應的邏輯。

這意味着你只能保存一個變化,這是你似乎說什麼......

如果你希望能夠排隊更行更改,那麼你需要兩個標誌存儲在上面的容器並在保存處理程序中逐個處理條目。想想看,如果將同一行添加到容器中以進行刷新和刪除,會發生什麼......

0

取決於您作爲網格的數據源擁有什麼。如果後端支持工作單元(例如EF或NHibernate),則直接更改數據,並且在上下文中調用Save時,上下文將解析更改及其順序。

如果您使用一些對象綁定列表作爲數據源(強烈建議用於WPF應用的View Model),那麼您應該向ViewModel ChangeType = ChangeType.RefreshProcess or ChangeType.Deleted添加一個新字段,然後保存您基於更改了字段。

相關問題