系统基础模块之通用字典项目管理

摘要:
常规词典项包括类别名称、词典项名称、词典值、排序、编辑器、编辑时间和其他字段。2) 将生成许多页面代码(您需要维护界面内容的显示和输入)。如果使用通用的字典管理模块,则可以解决上述问题,(第一个图是类别管理。当您单击字典类型名称来管理指定类型的字典项目时,需要添加项目的类别和特定的业务字典项目。这就完成了页面上的字典信息管理。

我们在很多系统中,往往需要维护很多字典项目,一般的字典项目包含有一个大类名称、字典项目名称、字典值、排序、编辑者、编辑时间等字段,这些内容往往大同小异,如在车辆管理中,我们可能需要维护:车辆类型、车辆品牌、车辆用途、路途类别、用车评价、车辆状态等等信息,这些是很简单的数据,用来给业务功能使用的,是一个下拉列表形的数据,如果我们为每个这样的简单类型都创建一个表的话,那么有以下坏处:

系统基础模块之通用字典项目管理第1张 

1)  如果业务模块很多,就会产生很多这样的表,看起来不雅,维护也不方便,增加工作量。

2)  会产生很多页面代码(你需要维护界面内容展示和录入),也是看起来不雅,不方便维护,增加工作量。

3)   代码中调用处理也不好,记不住哪个是具体的字典信息了,太多。

以上总结一句话,就是做重复工作,就算有一键生成代码的工具,也是不好的。

如果采用一个公用的字典管理模块能够解决以上问题,那么整个世界就清净了,一句话,简单。

好,那我们看看如何实现以上功能的。首先看看表的设计。


字典大类DictType表(就是按业务分类的意思,如上面的车辆管理是一类,可能还有飞机管理之类的,呵呵)

系统基础模块之通用字典项目管理第2张 

 字典数据项目DictData表,就是指定业务下有多少个字典项目,每个项目下面的名称和对应的值是什么,排序是什么等信息。

系统基础模块之通用字典项目管理第3张 

对这两个表生成相应的处理页面如下所示。(第一个图是大类管理、当点击字典类型名称进行指定类型的字典项目管理,也就是下面第二个图。

系统基础模块之通用字典项目管理第4张

系统基础模块之通用字典项目管理第5张

 完成了这个字典大类和字典明细项目的基本信息管理后,今后只要有新的需要,之需要增加项目的大类和具体的业务字典项目即可。之前我的文章有介绍,整个平台的菜单是动态配置的,因此,我们在业务子菜单中增加相应的菜单管理具体的项目即可。

系统基础模块之通用字典项目管理第6张

 上面我们看到,具体字典大类下的明细字典项目,我们只需要给出相应的连接即可,连接有一个TypeID就是具体的类型ID,根据这个ID,我们就知道目前的管理类别是什么了。

系统基础模块之通用字典项目管理第7张 

 这样页面的字典信息管理完成了,那么我们在具体的项目中如何使用它呢,看了下面的代码就会觉得很简单了。

 其实字典项目的使用无非有两个,一个是根据大类获取对应的下拉列表项目,一个根据制定的项目获取对应的字典值。如下面两个函数就是典型的应用。

        /// <summary>
        
/// 获得选择处理人
        
/// </summary>
        
/// <returns>ListItem[]</returns>
        public static ListItem[] GetListItem_MaySelProc()
        {
            
return SystemCommon.GetDictByDictType("选择处理人");
        }

        
/// <summary>
        
/// 转换选择处理人的名称
        
/// </summary>
        
/// <returns></returns>
        public static string GetMaySelProcString(string intSelectProc)
        {
            
return BLLFactory<DictData>.Instance.GetDictName("选择处理人", intSelectProc);
        }

 具体调用的业务类部分代码如下所示:

        /// <summary>
        
/// 根据字典类型名称获取所有该类型的字典列表集合(Key为名称,Value为值)
        
/// </summary>
        
/// <param name="dictType">字典类型名称</param>
        
/// <returns></returns>
        public Dictionary<stringstring> GetDictByDictType(string dictTypeName)
        {
            IDictData dal 
= baseDal as IDictData;
            
return dal.GetDictByDictType(dictTypeName);
        }
                
        
/// <summary>
        
/// 根据字典类型名称和字典Value值(即字典编码),解析成字典对应的名称
        
/// </summary>
        
/// <param name="dictTypeName">字典类型名称</param>
        
/// <param name="dictValue">字典Value值,即字典编码</param>
        
/// <returns>字典对应的名称</returns>
        public string GetDictName(string dictTypeName, string dictValue)
        {
            IDictData dal 
= baseDal as IDictData;
            
return dal.GetDictName(dictTypeName, dictValue);
        }

剩下的部分就是框架代码的部分了,根据一定的条件拿到对应的列表数据操作。这里不再赘述。 如果需要了解业务层和数据访问层的具体代码,可以和我联系,或者自己实现也不是难事。

本文只是提供了一个解决的思路,相信各位大牛如要实现上面的功能也是小Case的了。

免责声明:文章转载自《系统基础模块之通用字典项目管理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置程序员,做技术神马的,请对自己好一点!(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

fitnesse的安装

最近项目组有个单独的功能模块需要写自动化,由于是测试接口,我本来是想用之前那个项目组使用的robot framework+python,但是呢,项目组领导觉得,目前项目开发语言是java,相应的自动化也用java比较好,自动化途中遇到什么困难,比较好寻求帮助。所以就选择了java+fitnesse。 一.fitnesse的安装 (windows) 1.安装...

winform程序实现自动升级

本文代码参考http://www.cnblogs.com/iyond/archive/2007/06/14/783301.html而来,只是在原有基础上做了整合,想深入理解请看原本,我只是从实现过程简单总结。 解决方案总共有3个项目:AppUpdateDemo是测试项目;AppUpdateC是自动升级的组件,这个项目编译将生成一个AppUpdateC.dl...

那些年踩过的WebAPI的坑(一)

Visual Studio创建一个web项目, 在下一步的时候创建WebAPI项目的时候勾选web API之后,系统会生成一个web项目。 首先看一下webapi的路由配置,在App_start/webapiconfig.cs中,可以看到如下代码: 1 public static void Register(HttpConfiguration con...

21.扩展

  扩展就是为一个已有的类、结构体、枚举类型或者协议类型添加新功能。这包括在没有权限获取原始源代码的情况下扩展类型的能力(即逆向建模)。扩展和 Objective-C 中的分类类似。   Swift 中的扩展可以:  添加计算型属性和计算型类型属性  定义实例方法和类型方法  提供新的构造器  定义下标  定义和使用新的嵌套类型  使一个已有类型符合某个...

如何才能学到Qt的精髓——信号槽之间的无关性,提供了绝佳的对象间通讯方式,QT的GUI全是自己的一套,并且完全开源,提供了一个绝好机会窥视gui具体实现

姚冬,中老年程序员 叶韵、KY Xu、赵奋强 等人赞同 被邀请了很久了,一直在思考,今天终于下决心开始写回答。这个问题的确是够大的,Qt的代码规模在整个开源世界里也是名列前茅的,这么大的项目其中的精华是非常多的,很难说得全面,实际上我对Qt也不是完全了解,里面还有很多我不熟悉的东西。首先,我想谈的是 signal/slot,Qt算是发明了signa...

iOS 后台运行实现

iOS 后台运行的规则 应用的运行状态分为以下五种:Not running:应用还没有启动,或者应用正在运行但是途中被系统停止。Inactive:当前应用正在前台运行,但是并不接收事件(当前或许正在执行其它代码)。一般每当应用要从一个状态切换到另一个不同的状态时,中途过渡会短暂停留在此状态。唯一在此状态停留时间比较长的情况是:当用户锁屏时,或者系统提示用户...