zoukankan      html  css  js  c++  java
  • [转]Winform框架之字典数据管理

    好久没写博客了,除了是工作较忙的原因外,其实是也一直在想如何整合我所有的开发经验及技术积累,开发过很多Winform共享软件、ASP.NET的WebForm项目,发现很多东西是相互关联很紧密的,但往往我们太忙太懒,要好好整理,并整理出棒棒的一般比较难,但我们没有停步,梦想总会慢慢接近并实现。在做了很多项目之后,发现人的惰性或者惯性很大,因此有机会得好好整理下开发的成功,优化再优化,用的时候就越来越顺手了。


    在所有开发过的项目过程,很多如权限管理、字典数据管理模块,都是非常常用的模块,本文主要想介绍下提炼出来,各个项目均可通用的字典数据管理系统(或者叫做模块更为适合),在介绍之前,我想介绍下我的整合路线及一些想法,如下所示:



    其中框架中所有介绍的内容均为现有开发框架中有的东西及特性,如果要了解Winform框架的多维特点,可以现在最新的共享软件《仓库管理系统》,具体可以参考文章《从开发的软件《备件仓库管理系统》总结的一些经验》进行了解,该共享软件除了整合众多优秀的功能外,一个特点就是数据管理模块也得到了升华。


    在Winform框架中,其中权限管理系统、字典管理系统,都是可以做成独立的程序来使用,而且应该可以在程序中引用来查询或者获取相关的字典数据,如找某个键值的字典列表作为下拉列表,而且由于实际项目总,有点是SqlServer、有的是Access数据库的,所以支持多数据库是最好的选择。



    在字典数据数据管理工程项目中,我们看到有两个不同的数据访问层,工厂模式通过不同的配置,调用不同的数据访问层,从而实现SqlServer、Access等数据库的支持,当然可以扩展更多的数据库支持,我们先来看看工程项目的视图如下所示:



    配置文件如下所示

    1. <?xml version="1.0" encoding="utf-8" ?>
    2. <configuration>
    3. <configSections>
    4. <section name="dataConfiguration"
    5. 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"/>
    6. </configSections>
    7. <connectionStrings>
    8. <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=;" />
    9. <add name="DataAccess2" providerName="System.Data.SqlClient"
    10. 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"/>
    11. </connectionStrings>
    12. <dataConfiguration defaultDatabase="DataAccess"/>
    13. <appSettings>
    14. <!--软件名称-->
    15. <add key="ApplicationName" value="深田之星仓库管理系统"/>
    16. <!--开发商名称-->
    17. <add key="Manufacturer" value="广州爱启迪技术有限公司"/>
    18. <!--数据字典的数据库类型:access、sqlserver等-->
    19. <add key="ComponentDbType" value="access"/>
    20.  </appSettings>
    21. </configuration>

    我们通过DictionaryDbType来切换不同的数据库,不用修改代码实现多数据库支持,当然,不同的数据库,需要创建不同的数据库文件,不过数据库结构基本上是一致的。


    我们看看该字典管理模块的最终效果,如下所示:



    字典数据模块做成独立的程序后,一个可以独立运行,也可以在宿主程序中通过DLL方式调用类库来获取字典数据,如下所示:

    1. private void InitDictItem()
    2. {
    3. this.txtManufacture.Items.Clear();
    4. this.txtManufacture.Items.AddRange(DictItemUtil.GetDictByDictType("供货商"));
    5. this.txtBigType.Items.Clear();
    6. this.txtBigType.Items.AddRange(DictItemUtil.GetDictByDictType("备件属类"));
    7. this.txtItemType.Items.Clear();
    8. this.txtItemType.Items.AddRange(DictItemUtil.GetDictByDictType("备件类别"));
    9. this.txtSource.Items.Clear();
    10. this.txtSource.Items.AddRange(DictItemUtil.GetDictByDictType("来源"));
    11. this.txtWareHouse.Items.Clear();
    12. this.txtWareHouse.Items.AddRange(DictItemUtil.GetAllWareHouse().ToArray());
    13. this.txtDept.Items.Clear();
    14. this.txtDept.Items.AddRange(DictItemUtil.GetDictByDictType("部门"));
    15. }

    字典组件模块调用例子Demo程序下载地址也一并提供下载,下载地址如下:


    https://files.cnblogs.com/wuhuacong/DictionaryDemo.rar

  • 相关阅读:
    【解决方案】RTSP/Onvif安防可视化视频图像智能分析系统EasyNVR助力智慧公租房建设
    【解决方案】RTSP/Onvif网页无插件直播如何通过视频边缘计算网关+APP打造低成本场景视频监控
    文明旅游深入人心,如何通过视频监控系统进一步加强旅游景区管制?
    RTSP协议视频安防综合管理平台EasyNVR与海康萤石云平台运行机制差异对比说明
    视频结构化管理平台EasyNVR视频边缘计算网关和EasyNVR软件版本的异同对比
    视频安防智能监控系统管理平台EasyNVS为什么无法播放某套EasyNVR内通道的HLS视频流?
    RTSP视频安防智能监控系统EasyNVR配置完成后登录web页面不显示数据是什么问题?
    【解决方案】5G+视频智能分析打造工地智慧分析系统,提高建筑工地效率及安全
    视频智能安防监控系统EasyNVR是如何做到在平台内屏蔽部分菜单或者logo标识的?
    网页无插件智能安防直播平台EasyNVR中web页面以blob:http加载视频的探索
  • 原文地址:https://www.cnblogs.com/zhangzt/p/2462382.html
Copyright © 2011-2022 走看看