BaseTreeListForm 提供数据显示的窗体,通过重写方法实现你的数据显示
属性
AllowPaging:是否允许分页,如果允许,在重载BuildLists时需将PageArgs赋给DataAccess的PageArgs
AllowAddNew:是否允许新增,如果不允许,工具栏上的图标将不可见
AllowModify:是否允许修改,如果不允许,工具栏上的图标将不可见
AllowDelete:是否允许删除,如果不允许,工具栏上的图标将不可见
AllowImport:是否允许导入,默认为不导入。
AllowTreeList:是否允许信息列表中显示树
TypeRootName:左边类别树中顶级分类的名称
TypeNameField:左边类别树中分类名称的字段名,一般规定为Name
ChildCountField:左边类别树中判断是否有子节点的字段名,一般规定为ChildCount
HasTreeRegion:是否显示左边类别树
HasTreeToolbar:是否显示左边类别树中的工具栏菜单
DblClickSelect:是否在双击右边信息条目时关闭窗体,并返回所选定的信息对象
PageArgs:分页参数
Purview:三态权限控制(添加、修改、删除)
EditFormType:提供信息修改的窗体的类别名,该窗体应该继承BaseEditForm
EditFormParmas:信息修改的窗体的构造参数
TypeEditFormType:提供类别修改的窗体的类别名,该窗体应该继承BaseEditForm
TypeEditFormParmas:类别修改窗体的构造参数
QueryFormType:提供查询的窗体的类别名,该窗体应该继承BaseQueryForm
ModelType:指定信息对象的类别,在有导入接口时才需要对些属性进行设置
InfoParentId:指定默认的父ID字段,一般规定为ParentId
ResultInfo:双击后返回的信息对象,对应于DblClickSelect属性
ReloadOnModify:信息修改后是否重新从数据库加载显示,如果否,则使用所修改的对象显示
FillOnLoad:窗体加载时是否加载信息数据
保护的方法
RegisterShortcutKey:注册窗体快捷键
UnRegisterShortcutKey:注销窗体快捷键
GetInfoFields:获取当前信息显示的所有字段数组,对应于Config/*.cls文件中定义的列
CreateTypeButton:创建类别工具栏按钮
CreateButton:创建信息工具栏按钮
Reload:重新加载信息数据
GetSelectedInfo:当前选择的多个信息
GetSelectedInfoCount:获得选定信息的个数
GetSelectedType
重载方法
FormatValue:格式化数据,在数据填充Node前,对数据进行处理,比如枚举的转换
GetItemValue:对显示的信息数据进行处理
BuildLists:提供信息数据 isfull:是否全部加载数据,如果使用分页,将只取出当前页内数据,但在打印及导出时,该值应该为true
BuildTypes:提供分类数据
CreateButtons:创建信息部份的工具栏
CreateTypeButtons:创建分类部份的工具栏
GetSelectedInfo:返回选定行的信息
GetSelectedType:返回选定的类别
ConfirmDelete:确认删除信息数据,ids为信息的id数组
ConfirmDeleteType:确认删除类别
AddInfo:添加信息数据
ModifyInfo:修改信息数据
RefreshInfo:刷新单条信息
DeleteInfo:删除信息
AddType:添加类别
ModifyType:修改类别
DeleteType:删除类别
QueryInfo:查询信息
OnDoubleClickInfo:双击信息时的处理
ExportInfo:导出数据
PrintInfo:打印数据
ImportInfo:导入数据
CreateDataHelper:提供DataHelper对象,在使用导入接口时才设置
InsertRowValidate:导入,插入行时数据验证
BeforeInsertRow:导入,数据插入前的处理
BeforeSaveRow:导入,单条数据保存后的处理
SetReportConfig:打印,设置报表上相关信息
QuerySetTypeListData:查询,为查询窗体中的TypeListComboBox填充数据
QuerySetTypeTreeData:查询,为查询窗体中的TypeTreeComboBox填充数据
DisplayCount:显示统计数据,放在BuildLists里
实例化时,要传入类别编辑窗体和信息编辑窗体的类别,这样可以直接调用窗体进行数据的添加与修改,如:
EditFormType = typeof(frmEmployeeInfo);
TypeEditFormType = typeof(frmDepartInfo);
BuildTypes 构造左边分类的数据 parentId参数为父级id
BuildLists 构造右边信息数据
这里的列头是通过xml文件创建的,相应的配置类为FaibClass.Common.Windows.Config.ColumnConfigItem。在Config目录下创建 窗体类名称.cls 文件,就可以显示列了。
显示配置文件(Config/*.cls)
<Columns>
<Column>
<Type> TreeList的Column的类别,可以是Column、NumberColumn、DateTimeColumn等
<Text> 列头上显示的文本
<Width> 宽度
<ReportWidth> 报表中列的宽度,如果未设置使用Width
<Align> 对齐
<ImageIndex> 图标索引
<Visible> 是否可见
<Key> 对应的表字段
<Formater> 格式,当Type为NumberColumn或DateTimeColumn时设置,具体可参考Forms库
<CustomFormat> 自定义格式
<EnumType> 枚举类别名
<CountType> 统计类别
<CountGroupBy> 要进行分组统计的字段名
<CountGroupType> 可以对进行分组的字段进行枚举转换,这里是枚举的类名
<NotReport> 不显示在打印报表里
<Group> 可以根据不同的组设置列的可见性,注意这个值要使用FlagsAttribute
</Column>
</Columns>
GetSelectedType 获得当前选中的类别的实体信息
GetSelectedInfo 获得当前选中的信息的实体信息,代码与上面的一样。
ConfirmDelete 确认删除信息
ConfirmDeleteType 确认删除类别,代码与上面的一样
数据的查询,可以不用指定QueryFormType,而在Config下创建 窗体类名称.pcs 文件,相应的配置类为FaibClass.Common.Windows.Config.PropertyColumnConfig。具体的配置请关注后期的BaseQueryForm类。
数据的导入,将AllowImport设为true后,在Config下配置 窗体类名称.ips 文件,就可以进行数据导入了,相应的配置类为FaibClass.Common.Windows.Config.ImportConfig。
导入配置文件(Config/*.ips)
<ImportConfig>
<TableName> 数据库表名
<Columns>
<Column>
<Name> Excel中的列头名
<Key> 表中的字段名
<Primary> 是否唯一性
<ConvertForm> 从哪个表的哪个字段转换 Table.TextField
<ConvertTo> 转换到哪个字段 Table.IdField
<Sample> 使用说明
<Type> 类别,如果是Enum则要指定EnumType
<Reference> 使用引用,则ConvertForm和ConvertTo相应的要配置
</Column>
</Columns>
</ImportConfig>
比如:
<Column>
<Name>推荐人类别</Name>
<Key>RecommendType</Key>
<Type>Enum</Type>
<EnumType>FBS.Chance.Model.RecommendType, Model</EnumType>
<Sample>员工(只能填员工,代理商/商家或者会员)</Sample>
</Column>
<Column>
<Name>推荐人</Name>
<Key>Recommend</Key>
<Reference>RecommendType</Reference>
<ConvertForm>会员:TMember.Card,员工:TEmployee.Code,代理商/商家:TCompany.Code</ConvertForm>
<ConvertTo>TMember.Id,TEmployee.Id,TCompany.Id</ConvertTo>
<Sample>huangxd(推荐人类别为会员时填入卡号,员工及商家填入帐号)</Sample>
</Column>
这个地方的推荐人有三种类型,而会员表里存储的推荐人ID是对应表中的ID,会员填入卡号转换为TMember中的Id,员工填入帐号转换为TEmployee中的Id等等。
这时所说的Binary类型指的是,多个ID用(,)号连接后转换为byte存储,比如会员的爱好有多种,是定义在TInterest里的,这里就这样配置
<Column>
<Name>兴趣爱好</Name>
<Key>Interest</Key>
<Type>Binary</Type>
<ConvertForm>TInterest.Name</ConvertForm>
<ConvertTo>TInterest.Id</ConvertTo>
<Sample>足球,游泳,登山(用半角逗号分隔)</Sample>
</Column>
BaseTreeListForm还可以在信息栏里显示树型结构,将AllowTreeList设为true,在BuildLists里使用QueryArgs.ParentId:
也可以进行打印,在Config下配置 窗体类名称.rps 即可,详细的说明请参考BaseReportForm。
BaseTreeListForm就说到这里,下一节介绍 BaseEditForm 。
http://www.cnblogs.com/faib/archive/2009/05/02/1447953.html