Winform框架之字典數據管理
好久沒寫博客了,除了是工作較忙的原因外,其實是也一直在想如何整合我所有的開發經驗及技術積累,開發過很多Winform共享軟件、ASP.NET的WebForm項目,發現很多東西是相互關聯很緊密的,但往往我們太忙太懶,要好好整理,并整理出棒棒的一般比較難,但我們沒有停步,夢想總會慢慢接近并實現。在做了很多項目之后,發現人的惰性或者慣性很大,因此有機會得好好整理下開發的成功,優化再優化,用的時候就越來越順手了。
在所有開發過的項目過程,很多如權限管理、字典數據管理模塊,都是非常常用的模塊,本文主要想介紹下提煉出來,各個項目均可通用的字典數據管理系統(或者叫做模塊更為適合),在介紹之前,我想介紹下我的整合路線及一些想法,如下所示:
其中框架中所有介紹的內容均為現有開發框架中有的東西及特性,如果要了解Winform框架的多維特點,可以現在***的共享軟件《倉庫管理系統》,具體可以參考文章《從開發的軟件《備件倉庫管理系統》總結的一些經驗》進行了解,該共享軟件除了整合眾多優秀的功能外,一個特點就是數據管理模塊也得到了升華。
在Winform框架中,其中權限管理系統、字典管理系統,都是可以做成獨立的程序來使用,而且應該可以在程序中引用來查詢或者獲取相關的字典數據,如找某個鍵值的字典列表作為下拉列表,而且由于實際項目總,有點是SqlServer、有的是Access數據庫的,所以支持多數據庫是***的選擇。
在字典數據數據管理工程項目中,我們看到有兩個不同的數據訪問層,工廠模式通過不同的配置,調用不同的數據訪問層,從而實現SqlServer、Access等數據庫的支持,當然可以擴展更多的數據庫支持,我們先來看看工程項目的視圖如下所示:
配置文件如下所示
- <?xml version="1.0" encoding="utf-8" ?>
- <configuration>
- <configSections>
- <section name="dataConfiguration"
- type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data"/> type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data"/> type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data"/>
- </configSections>
- <connectionStrings>
- <add name="DataAccess" providerName="System.Data.OleDb" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:我的應用程序數據字典SqlDictionaryWHC.Dictionary.UIinDebugOrderWater.mdb;User ID=Admin;Jet OLEDB:Database Password=;" />
- <add name="DataAccess2" providerName="System.Data.SqlClient"
- connectionString="Persist Security Info=False;Data Source=(local);Initial Catalog=Warehouse;User ID=sa;Password=123456"/> connectionString="Persist Security Info=False;Data Source=(local);Initial Catalog=Warehouse;User ID=sa;Password=123456"/> connectionString="Persist Security Info=False;Data Source=(local);Initial Catalog=Warehouse;User ID=sa;Password=123456"/>
- </connectionStrings>
- <dataConfiguration defaultDatabase="DataAccess"/>
- <appSettings>
- <!--軟件名稱-->
- <add key="ApplicationName" value="深田之星倉庫管理系統"/>
- <!--開發商名稱-->
- <add key="Manufacturer" value="廣州愛啟迪技術有限公司"/>
- <!--數據字典的數據庫類型:access、sqlserver等-->
- <add key="ComponentDbType" value="access"/>
- </appSettings>
- </configuration>
我們通過DictionaryDbType來切換不同的數據庫,不用修改代碼實現多數據庫支持,當然,不同的數據庫,需要創建不同的數據庫文件,不過數據庫結構基本上是一致的。
我們看看該字典管理模塊的最終效果,如下所示:
字典數據模塊做成獨立的程序后,一個可以獨立運行,也可以在宿主程序中通過DLL方式調用類庫來獲取字典數據,如下所示:
- private void InitDictItem()
- {
- this.txtManufacture.Items.Clear();
- this.txtManufacture.Items.AddRange(DictItemUtil.GetDictByDictType("供貨商"));
- this.txtBigType.Items.Clear();
- this.txtBigType.Items.AddRange(DictItemUtil.GetDictByDictType("備件屬類"));
- this.txtItemType.Items.Clear();
- this.txtItemType.Items.AddRange(DictItemUtil.GetDictByDictType("備件類別"));
- this.txtSource.Items.Clear();
- this.txtSource.Items.AddRange(DictItemUtil.GetDictByDictType("來源"));
- this.txtWareHouse.Items.Clear();
- this.txtWareHouse.Items.AddRange(DictItemUtil.GetAllWareHouse().ToArray());
- this.txtDept.Items.Clear();
- this.txtDept.Items.AddRange(DictItemUtil.GetDictByDictType("部門"));
- }
字典組件模塊調用例子Demo程序下載地址也一并提供下載,下載地址如下:
http://files.cnblogs.com/wuhuacong/DictionaryDemo.rar
【編輯推薦】