【第22期】观点:IT 行业加班,到底有没有价值?

常规功能和模块自定义系统 (cfcmms)—017自定义grid方案(1)

原创 2015年11月19日 10:56:04

常规功能和模块自定义系统 (cfcmms)—017自定义grid方案(1)


  在定义好了模块和字段这二个最基本的系统元素之后,就可以开始其他功能的加入了。最先想到的功能应该就是grid了。
  grid对应于某个模块。由于模块字段有很多,一个模块只有一个grid方案并不能满足需求,因此一个模块需要多grid方案。每个grid方案中可以分别放置不同的字段,最为普通的可以建立二个grid方案,一个方案里面放置模块的重要信息,还有一个方案放置所有模块的信息。
  对于每一个grid方案来说,又可以分为若干个字段组,每个组下有若干个字段。因此一个自定义grid方案需要有三个表来保存信息:grid方案表、grid 字段分组、字段分组下的字段。具体层次见下图:

  列表方案的表名为 _ModuleGridScheme ,其java bean定义为:
@TableDefine(group = "系统模块", id = 9904, title = "模块列表方案", shortName = "列表方案")
public class _ModuleGridScheme implements _IModuleControlInterface, Serializable {

	@Id
	@GeneratedValue(generator = "increment")
	@GenericGenerator(name = "increment", strategy = "increment")
	@FieldDefine(title = "ID号", number = 10, hidden = true)
	private Integer tf_gridSchemeId;

	@JsonIgnore
	@ManyToOne(cascade = CascadeType.REFRESH, fetch = FetchType.LAZY)
	@JoinColumn(name = "tf_moduleId", nullable = false)
	@FieldDefine(title = "模块", number = 20)
	private _Module tf_Module;

	@FieldDefine(title = "顺序号", number = 30)
	@Column(nullable = false)
	private Integer tf_schemeOrder;

	@FieldDefine(title = "方案名称", nameField = true, number = 40)
	@Column(length = 50, nullable = false)
	private String tf_schemeName;

	@FieldDefine(title = "系统方案", number = 50)
	private Boolean tf_isSystemScheme;

	@FieldDefine(title = "可编辑", number = 60)
	private Boolean tf_isAllowEditInGrid;

	@FieldDefine(title = "排序字段", number = 80)
	private String tf_defaultSort; // 默认排序字段,如为null则为数据库默认排序

	@FieldDefine(title = "附加设置", number = 90)
	private String tf_otherSetting;

	@OneToMany(targetEntity = _ModuleGridSchemeGroup.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
	@JoinColumn(name = "tf_gridSchemeId")
	@OrderBy("tf_gridGroupOrder")
	private List<_ModuleGridSchemeGroup> tf_schemeGroups;
	
  在上面的可以看出模块grid方案的一些属性,其中顺序号最小的记录会被做为默认的显示方案。

  grid方案分组的表名为 _ModuleGridSchemeGroup,其java bean的定义为:
@TableDefine(group = "系统模块", id = 9905, title = "模块列表字段分组", shortName = "列表字段分组")
public class _ModuleGridSchemeGroup implements _IModuleControlInterface, Serializable {

	public static final String GRIDGROUPID = "tf_gridGroupId";

	@Id
	@GeneratedValue(generator = "increment")
	@GenericGenerator(name = "increment", strategy = "increment")
	@FieldDefine(title = "ID号", number = 10, hidden = true)
	private Integer tf_gridGroupId;

	@JsonIgnore
	@ManyToOne(cascade = CascadeType.REFRESH, fetch = FetchType.LAZY)
	@JoinColumn(name = "tf_gridSchemeId", nullable = false)
	@FieldDefine(title = "模块列表方案", number = 20)
	private _ModuleGridScheme tf_ModuleGridScheme;

	@FieldDefine(title = "顺序号", number = 30)
	@Column(nullable = false)
	private Integer tf_gridGroupOrder;

	@FieldDefine(title = "分组名称", nameField = true, number = 40)
	@Column(length = 50, nullable = false)
	private String tf_gridGroupName;

	@FieldDefine(title = "表头分组", number = 50)
	private Boolean tf_isShowHeaderSpans;

	@FieldDefine(title = "锁定", number = 60)
	private Boolean tf_isLocked;

	@FieldDefine(title = "其他设置", number = 90)
	private String tf_otherSetting;

	@OneToMany(targetEntity = _ModuleGridSchemeGroupField.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
	@JoinColumn(name = "tf_gridGroupId")
	@OrderBy("tf_gridFieldOrder")
	private List<_ModuleGridSchemeGroupField> tf_groupFields;

  列表字段的定义表名为 _ModuleGridSchemeGroupField,其java bean为
@TableDefine(group = "系统模块", id = 9906, title = "模块列表字段", shortName = "列表字段")
public class _ModuleGridSchemeGroupField implements _IModuleControlInterface, Serializable {

	@Id
	@GeneratedValue(generator = "increment")
	@GenericGenerator(name = "increment", strategy = "increment")
	@FieldDefine(title = "ID号", hidden = true, number = 10)
	private Integer tf_gridFieldId;

	@JsonIgnore
	@ManyToOne(cascade = CascadeType.REFRESH, fetch = FetchType.EAGER)
	@JoinColumn(name = "tf_gridGroupId", nullable = false)
	@FieldDefine(title = "模块列表字段分组", number = 20)
	private _ModuleGridSchemeGroup tf_ModuleGridSchemeGroup;

	@JsonIgnore
	@FieldDefine(title = "顺序号", number = 30)
	@Column(nullable = false)
	private Integer tf_gridFieldOrder;

	@JsonIgnore
	@ManyToOne(cascade = CascadeType.REFRESH, fetch = FetchType.EAGER)
	@JoinColumn(name = "tf_fieldId", nullable = false)
	@FieldDefine(title = "模块字段", nameField = true, number = 40)
	private _ModuleField tf_ModuleField;

	@Column(insertable = false, updatable = false)
	private Integer tf_fieldId;

	@FieldDefine(title = "列宽度", number = 50)
	private Integer tf_columnWidth;

	@FieldDefine(title = "锁定列", number = 60)
	private Boolean tf_isLocked;

	@FieldDefine(title = "附加设置", number = 80)
	private String tf_otherSetting;

	@FieldDefine(title = "隐藏列", number = 90)
	private Boolean tf_ishidden;

  以上为三个类的定义,大家能够在源码中看到每个字段的意思。
  前面讲过几次,对于每一个自定义的内容来说,要扩充新的功能只要先配置再前后台协同工作即可。对于模块grid 方案,现在也只有最基本的grid 列表功能。如果想要加入可分组、可行内编辑、可展开行等功能的话,只要加入相应的配置字段,然后在生成grid 的时候加入相应的属性即可。这一部分等以后做到的时候再进行讲解。

  下面以我发布的系统为例,用“省份”模块来看看grid自定义的实现和展示。


  该省份模块建立了二个grid方案,第一个名为省份基本信息,第二个是省份所有信息。现在看一下第二个方案的截图。


  在上面这个方案里,显示的内容就比较饱满了。在这个方案里,一定有二个字段组,第一个不显示组名,第二个显示了分组的名称。各个不同类型的字段用不同的颜色和格式来区分。百分比的字段可以显示描述的图像。每个字段上都可以加上一个自定义的tooltpl描述。还可以显示图像、子模块中的聚合值,比如说子模块中记录的个数,某个字段的和等等。可以说自定义系统的可扩充功能,只有想不到,没有做不到。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

常规功能和模块自定义系统 (cfcmms)—007Extjs的配置文件和自定义ui

常规功能和模块自定义系统 (cfcmms)—007Extjs的配置文件和自定义ui   一、在自动生成的项目中,文件 app.json 是整个前台系统的配置文件,可以在里面增加或修改配置参数来完...
  • jfok
  • jfok
  • 2015-09-05 08:35
  • 4673

常规功能和模块自定义系统—062快速架构(quickbuild)开源版发布

常规功能和模块自定义系统—062快速架构开源版发布   经过一段时间的开发和整理,制作了一个前后台完全开源的快速架构系统,里面具备了整个系统的大部分功能,可以用来架构业务系统或管理系统。在网站上也在...
  • jfok
  • jfok
  • 2017-06-16 09:35
  • 364

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

跟我一起学extjs5(03--项目中文件的加载过程)

跟我一起学extjs5(03--项目中文件的加载过程)
  • jfok
  • jfok
  • 2014-06-30 11:17
  • 27567

跟我一起学extjs5(01--开发的总体说明)

跟我一起学extjs5(01--开发的总体说明)         我之前使用extjs4+java spring MVC架构了一套“模块常规功能自定义的系统”(博客详见点击打开链接),该系统...
  • jfok
  • jfok
  • 2014-06-30 11:15
  • 40030

常规功能和模块自定义系统 (cfcmms)—008测试试用版(6.0.0)下载及使用

常规功能和模块自定义系统 (cfcmms)—008测试试用版(6.0.0)下载及使用   在经过了一些调试和优化后,现在可以下载和测试试用版(6.0.0)。在这个版中本主界面和菜单改用了mvvm方...
  • jfok
  • jfok
  • 2015-09-21 08:48
  • 4808

跟我一起学extjs5(08--自定义菜单1)

跟我一起学extjs5(08--自定义菜单1)         顶部和底部区域已经作好,在顶部区域有一个菜单的按钮,这一节我们设计一个菜单的数据结构,使其可以展示出不同样式的菜单。由于准...
  • jfok
  • jfok
  • 2014-07-02 09:38
  • 14857

跟我一起学extjs5(07--继承自定义一个控件)

跟我一起学extjs5(07--继承自定义一个控件)         Extjs的开发都可以遵循OOP的原则,其对类的封装也很完善了。自定义一个控件最简单的办法就是继承一个已有的控件...
  • jfok
  • jfok
  • 2014-07-01 14:01
  • 18701

跟我一起学extjs5(09--自定义菜单2)

跟我一起学extjs5(09--自定义菜单2)         这一节来定
  • jfok
  • jfok
  • 2014-07-02 14:03
  • 16193

常规功能和模块自定义系统 (cfcmms)—014模块自定义概述(1)

常规功能和模块自定义系统 (cfcmms)—014模块自定义概述   前面的章节讲了一些搭建系统和Extjs6的一些相关内容,这节开始介绍一下《常规功能和模块自定义系统》中的模块自定义的部分。  ...
  • jfok
  • jfok
  • 2015-11-04 10:09
  • 1981

跟我一起学extjs5(02--建立工程项目)

跟我一起学extjs5(02--建立工程项目) 我们先建立一个java Project,虽然现在开发跟java一点关系也没有,我们也先塔建java的Web环境。 1、进入eclipse,建...
  • jfok
  • jfok
  • 2014-06-30 11:16
  • 31388
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)