天天看點

Winform開發架構之資料即時更新的實作

在我的随筆中,Winform開發介紹過很多内容,随着介紹的深入,很多地方進行精細化的介紹當中了。我們一般在Winform的清單界面中展現相關記錄,在一個彈出視窗給客戶錄入資料,OK,這些沒問題,但是我們錄入資料後,很多情況下忽略了一些使用者體驗,等客戶自己重新整理才在清單中顯示最新的記錄出來,這樣有些注重細節的客戶就不願意了。在我的一個項目開發中,有客戶就有這樣的抱怨,為什麼我錄入資料,還要手動重新整理,為什麼不能一儲存就能同時更新清單?好,技術上肯定不是問題,思想考慮不夠深入而已。下面我來介紹基于我的Winform開發架構的這種資料即時更新的實作過程。

在開篇之前,首先介紹一下Winform開發架構中的界面層的繼承關系,首先我把所有窗體區分為三類,一類是普通的窗體,一類編輯窗體,還有一類是清單顯示窗體。窗體的內建可以封裝處理很多東西,良好的封裝和繼承,可以為我們提高效率,減少重複代碼,它的作用不再在此讨論和強調。

采用窗體繼承,極大程度上統一了界面,并且對常用的界面操作,提供了良好的封裝,如基礎資料編輯、新增窗體積累封裝了對回車、方向鍵、資料重新整理、異常處理、資料檢查、資料儲存、資料更新等接口,為窗體的資料處理提供了很大的友善性。

而資料查詢顯示窗體則考慮到多文檔展示的需要,一般繼承合适的基類,封裝一些常用到的界面布局,以便實作相應的界面處理效果。

上面所述的三類窗體,繼承的界面基類分别是下面幾個。普通的窗體繼承自BaseForm,編輯窗體繼承自BaseEditForm,清單顯示窗體繼承自BaseDock。在工程中如下所示。

在UML設計圖中,我們看到他的關系如下所示,其中綠色邊框的為我們上面的基類,紅色邊框的是我們實際的窗體對象,從這個圖中,我們可以很清晰看到他的關聯關系。

BaseEditForm相對來說,比其他兩個基類窗體複雜一些,他除了提供幾個資料儲存必須的按鈕外,還可以通過前後進行資料檢視,他的初始化界面及應用例子界面如下所示。

介紹完上面的繼承關系後,我們來看看基于這種繼承模式,如何實作資料及時更新的操作,也就是在資料儲存窗體,儲存資料後,資料記錄同步在清單中展現的效果。

1)首先在基類界面BaseEditForm中添加事件處理

2)然後添加事件的處理操作,如下所示。

3)在資料儲存的時候,觸發即時更新資料的事件

以上屬于基類的資料儲存操作,我們特别注意這段代碼即可

4)清單展現界面的操作實作

實作上面的操作後,這些就不需要在BaseEditForm的子類做任何操作了,隻需要在具體的清單展現界面類中實作下面的代碼即可。

我們知道,清單界面一般都會有具體的資料重新整理函數封裝(如BindData函數),那麼我們在建立資料的時候,實作代碼是這樣的。

這樣我們在新窗體(資料添加、資料編輯)中維護資料的時候,一旦觸發儲存操作,這些最新的資料記錄也在清單中展現出來了。

最後放上一個Winform開發架構的界面,供參考。

繼續閱讀