本文讲的是子表控件的基本用法。
子表控件SheetSubTable,修改后的子表控件 SheetSubTableSZ,DataField属性绑定子表数据项名称
<SheetControls:SheetSubTableSZ ID="SheetSubTable1" Width="91.5%" runat="server" DataField="ZServerApply"/>
//绑定事件后的子表控件 <SheetControls:SheetSubTableSZ ID="SubTable" Width="91.5%" runat="server" DataField="ZServerApply" oneditorinitializing="SubTable_EditorInitializing" oneditorloading="SubTable_EditorLoading" oneditorsaving="SubTable_EditorSaving"
onrowdatabound="SubTable_RowDataBound" />
还有RowCommand,RowDataBound事件,这两个事件既是子表控件中表格的事件,子表控件中的表格引用为 SubTable.ItemView,类型为GridView。
子表控件事件(子表控件名为SubTable时):
//子表控件字段翻译、显示、备注、排序设置 protected override void OnPreInit(EventArgs e)
//子表控件初始化事件,事件优先级高于LoadDataFields,Page_Load protected void SubTable_EditorInitializing(object sender, OThinker.H3.WorkSheet.SheetSubTableSZ.EditorInitializingEventArgs e)
//子表控件加载数据事件 protected void SubTable_EditorLoading(object sender, OThinker.H3.WorkSheet.SheetSubTableSZ.EditorLoadingEventArgs e)
//子表控件数据保存事件 protected void SubTablePersons_EditorSaving(object sender, OThinker.H3.WorkSheet.SheetSubTableSZ.EditorSavingEventArgs e)
//子表控件的GridView控件数据绑定事件,可用于单元格数据的翻译显示 protected void SubTable_RowDataBound(object sender, GridViewRowEventArgs e)
子表控件在进行操作时,主要要实现的功能有:
1、子表字段的显示;2、子表字段的翻译;3、子表字段的数据排序设置;4、子表字段的样式设置;5、子表的GridView样式设置;6、子表的GridView表格单元格内容翻译;
1、子表字段的显示
比如子表字段需要显示或隐藏时,在OnPreInit事件使用 SubTable.SetColumnVisiable(string columnName, bool EditVisible, bool GridCellVisible)
columnName为子表字段名,区分大小写;EditVisible为在子表编辑区域是否显示该字段;GridCellVisible为在子表的表格区域是否显示该字段。
2、子表字段的翻译
比如子表字段是英文的,需要翻译成中文显示,在OnPreInit事件使用 SubTable.SetColumnDisplayNameDesc(string columnName, string displayName, string description)
columnName为子表字段名,区分大小写;displayName为在子表编辑区域该字段的标签显示名称;description为在子表的表格区域该字段的控件右侧的标签显示名称,也可以称为字段描述备注。
3、子表字段的数据排序设置
比如对子表的表格内数据按字段进行一定的排序,在OnPreInit事件使用 SubTable.SetSortColumn(string columnName, SheetSubTableSZ.SortType sortType)
columnName为子表字段名,区分大小写;sortType为排序类型,按 ctrl+j 可以获取该枚举。若需要多个字段排序时,可以再添加一行该代码,设置不同的字段和排序类型。
4、子表字段的样式设置
比如对子表字段对应的编辑区域、表格区域做一些样式设置,在OnPreInit事件使用 SubTable.SetColumnCss(string columnName, string label_style, string control_style, string desc_style)
columnName为子表字段名,区分大小写;label_style为字段左侧标签的样式;control_style为字段控件的样式;desc_style为字段右侧描述标签的样式。支持直接写样式表达式,或样式名称。
如 "text-align:right;font-size:14px;",".dataTitle"。
5、子表的GridView样式设置
比如对子表表格样式设置,在OnPreInit事件使用 SubTable.ItemView.HeaderStyle/SubTable.ItemView.RowStyle/SubTable.ItemView.FooterStyle,具体样式设置可以参考微软GridView标准控件的样式设置。
6、子表的GridView表格单元格内容翻译
比如子表某字段是用数字来代表枚举保存在子表数据库中的,比如“0-停用,1-启用,2-暂停”等,在子表 SubTable_RowDataBound 事件中,编写代码如:
if (e.Row.RowType==DataControlRowType.DataRow) { //State状态字段的翻译 int i_index = SubTable.GetColumnIndex("State"); if (i_index > -1) { string celltext = e.Row.Cells[i_index].Text; switch (celltext) { case "0": e.Row.Cells[i_index].Text = "停用"; break; case "1": e.Row.Cells[i_index].Text = "启用"; break; case "2": e.Row.Cells[i_index].Text = "暂停"; break; } } }
子表控件其他属性和事件方法见 “流程平台:子表控件(二) - 属性、事件、方法” 一文。
子表控件的字段控件初始化、数据加载、数据保存操作 见 “流程平台:子表控件(三) - 数据操作” 一文。