• 个人开发框架总结(二)


        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
  • 相关阅读:
    线程、进程、死锁
    堆和栈的区别
    用winrar解压时提示无法设置安全数据 拒绝访问的解决方法
    句子迷
    【Sublime Text3】sublime 推荐必备插件与常用快捷键说明
    【计算机科学】知乎上关于计算机科学、程序语言一些有用的回答~(不定期更新)
    【SQL 函数】日期函数、类型转换、字符串函数
    【Sql Server函数】日期时间函数、日期查询今天、昨天、7天内、30天的数据
    【JAVA环境配置免安装】如何由jdk的安装版本改成非安装版本
    【SQL 社区】一些有用的SQL社区!(持续更新~~)
  • 原文地址:https://www.cnblogs.com/faib/p/1447783.html
Copyright © 2020-2023  润新知