现在的位置: 首页 > 综合 > 正文

个人开发框架总结(二)

2013年03月05日 ⁄ 综合 ⁄ 共 9652字 ⁄ 字号 评论关闭

    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

Code

    BuildLists 构造右边信息数据

Code

 

    这里的列头是通过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 获得当前选中的类别的实体信息

Code

    GetSelectedInfo 获得当前选中的信息的实体信息,代码与上面的一样。

    ConfirmDelete 确认删除信息

Code

    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:

Code

    也可以进行打印,在Config下配置 窗体类名称.rps 即可,详细的说明请参考BaseReportForm。

    BaseTreeListForm就说到这里,下一节介绍 BaseEditForm 。 
    http://www.cnblogs.com/faib/archive/2009/05/02/1447953.html

抱歉!评论已关闭.