SubGrids(Sm子表集合)被设计用来显示与主表绑定的多个子表数据的。这个子表集合中每个子表仍然可以继续绑定更深层次的子表,理论上是可以绑定无限深度的子表的。当然,一般也不会有这种场景。
我们可以通过“绑定主表(BaseDataRuleGrid)”属性来绑定一个表,然后就可以0代码加载这个主表的所有子表及孙表。我们为了让子表可以在子窗口中也能方便地绑定,就又设计了“绑定表字符版(BindingSmGrid)”属性来绑定其他窗口中的主表。
绑定完主表之后,再在主表的“表属性设置”窗口中添加子表清单即可正常加载所有子表。
我们可以设置一下“可见按钮(VisibleButtons)”属性,来决定哪些系统默认菜单命令显示出来。
常用属性
属性名称 | 中文名称 | 说明 |
BaseDataRuleGrid | 绑定主表 | 返回或设置当前子表所绑定的主表。 |
BaseGridMenu | 返回当前控件的菜单。 | |
BindingDataRuleGrid | 绑定表字符版 | 返回或设置当前控件绑定的BaseGrid对象。 |
CurrentGrid | 所有子表中当前显示的表。 | |
ExtendedProperties | 返回当前控件的扩展属性 | |
Form | 返回当前控件所在的窗体。 | |
Grids | 返回当前窗口一共有多少个绑定的表对象。 | |
IsSubForm | 是否子窗口 | 返回当前控件是否在子窗口中显示。 |
ShowMenu | 显示菜单 | 是否显示菜单 |
TabPages | 返回当前控件中TabPage集合。 | |
ToolTipText | 字符型,返回或设置控件的提示。 | |
VisibleButtons | 可见按钮 | 指定哪些按钮可以显示 |
方法
方法名称 | 说明 |
TabPage | 根据表名称返回对应的C1DockingTabPage对象方便对显示标题及是否隐藏显示进行操作。 |
AddSubGrid | 根据参数添加一个新的子表。使用此方法前必须先绑定主表。 |
AddSubGrid(dataTableName,showCaption,dicLinkColMap,isSubForm,gridControlName,isView,editDataTableName)
参数 | 说明 |
dataTableName | 必填选项,字符串类型,数据库表或视图的名称。 |
showCaption | 必填选项,字符串类型,新增子表显示的标题。 |
dicLinkColMap | 必填选项,Dictionary<string,string>类型,主表和子表关联字典的字典。主表的字段为Key,子表的字段为Value。 |
isSubForm | 必填选项,逻辑类型,当前子表相对于关联的主表是否是在子窗体或者说是在另外一个窗体中的。因为如果是子窗体中的话,有可能当前新增的表是主表中子表的一个副表。需要从主表在主窗口中已经加载的子表中读取相应的表属性设置。 |
gridControlName | 可选项,字符串类型,新建表的SmGrid的控件名称。这个决定了我们后续引用表的名称。如果我们什么都不指定的话,这个控件名称就会默认为"tbl_{dataTableName}".。如果我们指定了控件名称,就以我们指定的控件名称为准。 |
isView | 可选项,逻辑类型,当前表加载后是否需要编辑保存。如果不想编辑的话就设置为True,如果想编辑的话就设置为False。默认为False。 |
editDataTableName | 可选项,字符串类型,就是当前表的可编辑数据库表名。如果之前dataTableName参数传入的是一个视图(符合可编辑视图的前提条件),然后我们又想编辑视图数据的话,那么这里可以指定一个可编辑数据库表名。 |
子表集合应用到窗体之中的效果如下:
我们如果想对子表进行精确控制的话,可以考虑在“表属性设置”窗口中写表事件。
如果想在子表集合上添加自定义菜单的话,请在第一个子表“表属性设置”窗口中添加自定义菜单。