常规功能和模块自定义系统 (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)—041模块附加字段和新的Grid方案设计器

041模块附加字段的设计   在整个自定义系统,模块附加字段也是有必要的。对于一个模块来说附加的字段有二种,一种是父模块中的字段,另一种是子模块中的聚合字段。在模块记录生成sql语句的时候,只是生成了...
  • jfok
  • jfok
  • 2016-05-10 09:43
  • 1321

常规功能和模块自定义系统 (cfcmms)—020自定义grid方案(4改成任意层表头)

常规功能和模块自定义系统 (cfcmms)—020自定义grid方案(4改成任意层表头)   在现在的系统中grid表头是可以分组的,但是只能分一层,现在我想把它改成可以分成多层的。比如象这样的表...
  • jfok
  • jfok
  • 2015-11-23 08:59
  • 2424

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

常规功能和模块自定义系统 (cfcmms)—018自定义grid方案(2)   下面来看看在系统中如何定义一个grid方案。当前定义grid方案也是采用对记录模块操作的方式,并没有采用所见即所得得...
  • jfok
  • jfok
  • 2015-11-20 09:19
  • 2247

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

常规功能和模块自定义系统 (cfcmms)—019自定义grid方案(3)   这一节开始进入自定义的内部,来看看第一个自定义的功能是如何实现的。    1、在系统登录的时候,将所有的登录用户有权...
  • jfok
  • jfok
  • 2015-11-20 11:27
  • 1834

常规功能和模块自定义系统 (cfcmms)—053把一对多(OneToMany)字段的grid加入到form中

053把一对多(OneToMany)字段的grid加入到form中   前二章中加入了oneToMany字段,并且加入到form中显示条数,并且有一个按钮可以用来打开oneToMany的模块来进行...
  • jfok
  • jfok
  • 2016-07-08 16:39
  • 680

常规功能和模块自定义系统 (cfcmms)—042模块Grid的排序和筛选

pagingtoolbar042模块Grid的排序和筛选   一、排序   Grid界面排序可以点击列头直接来进行,这个是很方便。但是还有二个问题需要解决:无法取消排序至默认,单字段和多字段排序不可以...
  • jfok
  • jfok
  • 2016-05-13 10:13
  • 1086

常规功能和模块自定义系统 (cfcmms)—022自定义grid列(6图标列)

常规功能和模块自定义系统 (cfcmms)—022自定义grid列(6图标列)   某些模块可能需要一个记录图标
  • jfok
  • jfok
  • 2015-12-08 10:15
  • 1300

常规功能和模块自定义系统 (cfcmms)—021自定义grid列(5附件列)

常规功能和模块自定义系统 (cfcmms)—021自定义grid列(附件个数)   模块列表Grid是由多个列组成的,在实际的系统构建过程中需要有一些自定义的类来完成一些特殊的功能。现在来看看一个...
  • jfok
  • jfok
  • 2015-12-05 21:29
  • 2350

常规功能和模块自定义系统 (cfcmms)—036模块记录(数据)的权限设计(1)

036模块记录(数据)的权限设计与实现(1)   最近正在更新权限系统,主要是模块记录数据的权限如何方便的自定义设计。这几天刚把底层的一些东西弄好,把实现过程写一下供大家参考,顺便也自己做个备忘录...
  • jfok
  • jfok
  • 2016-04-02 11:27
  • 1064

常规功能和模块自定义系统 (cfcmms)—027开发日志(创建ManyToMany的column2)

027开发日志(创建ManyToMany的column2)   先来看看mysql能不能把结果集转换成一个字符串,在网上搜索了一下,还真有这个函数。函数名字为 group_concat。这个函数可...
  • jfok
  • jfok
  • 2015-12-29 10:10
  • 1448
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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