• 信息系统开发平台OpenExpressApp - 理解核心元素ObjectView


      

      上图是eXpressApp Framework框架中的重要架构元素,其中View居于中间位置,是框架的核心概念之一,而OpenExpressApp也使用并扩充了这一核心概念。理解OEA必须理解这些核心概念,本篇将介绍一下在OEA中ObjectView的一些知识,明白这个概念后就能更加快速的理解AutoUI技术了。

    下图是View相关的主要类图:

     

      信息系统必不可少的需要在UI上显示数据,OEA使用了多种抽象的视图概念。视图可以访问指定数据并通过自动界面生成来装载显示数据,用户通过command机制可以扩充自己针对ObjectView的命令来操纵与ObjectView相关的内容。

      从类库可以看出,框架支持两类视图:列表视图【ListObjectView】,详细视图【DetailObjectView】,DetailObjectView又派生了导航查询视图【NavigateQueryObjectView】和【CondtionQueryObjectView】,大家可以从下图看出各个ObjectView对应到的实际界面:

    ObjectView

      ObjectView是所有视图的基类,主要实现了两个接口,一个是ISelectionContext,另一个是IViewDataContext

    Code
      

      ObjectView内部主要实现了传递类型,和生成控件等虚方法。通过传递类库类型就可以生成对应的抽象View类,然后调研Control,ObjectView的继承类内部就会自动调用AutoUI生成显示数据的UI控件。    

    Code

    DetialObjectView

      

      DetailObjectView 表示单个实体的详细信息,单据样式模块一般左边是列表,右边上面是详细信息区域,下面是细表区域(可以查看上面具体UI图)。右边上面的视图就是一个DetailObjectView,它作为单个根对象的详细信息显示,并可以访问单据样式的列表对应的ListObjectView。根对象会带有很多子对象,每个子对象都对应一个子ListObjectView(如果是多对象树结构则只生成树的根对象对应的View)

    Code
      


    NavigateQueryObjectView


      NavigateQueryObjectView 表示导航查询条件查询类详细信息,一般作为导航条件查询面板显示,可以出现在查询模块和单据模块的查询面板中,也可以出现在单据模板的导航面板中。如果单据模块有导航视图,那么单据新增时,会自动把导航视图的导航项传递到单据新增对象的属性中。后面会单独再介绍如何用面向对象的方式来生成导航查询应用的示例。
      
    Code

    CondtionQueryObjectView


     CondtionQueryObjectView 表示条件查询对象详细信息,一般作为导航条件查询面板显示,通过【查询】按钮触发查询,通过传递View.CurrentData作为类库的GetList方法的参数来获取查询结果。类库继承与DetailObjectView本身没有实现什么特定的方法。

    ListObjectView


      
      ListObjectView 表示多个对象实体的列表信息,OEA支持普通列表样式和树形样式,树形样式又支持单对象类型和多对象类型。ListObjectView关联前面提到的两个查询ObjectView,也关联一个查询列表单对象的一个DetailObejctView。ListObejctView通过传入的对象类型是否实现了ITreeNode来判断是使用树形编辑器TreeListEditor还是ListEditor
    Code

    ObjectView的遍历

    通过上面的讲解,DetailObjectView可以访问ChildView,ListObjectView可以访问对应的单个对象的DetailObjectView和查询类View,这样就可以保证通过当前View可以遍历查找对象关系图中的任一对象类型所对应的ObjectView。这种查找方法在自定义功能代码中会用到。在遍历查找时尽量通过GetChildView和GetParentView查找子对象和父对象,而不直接使用.Parent和.Child[0]来操作,以免由于类库关系更改导致代码更改。
      对于下图所示UI,各个View之间存在如下关系:




    注:这几类ObjectView应该和界面无关的,后期会把UI无关的部分挪入到OpenExpressApp.Module项目中

    信息系统开发平台OpenExpressApp - 内置支持的列表编辑方式

    更多内容: 开源信息系统开发平台之OpenExpressApp框架.pdf

  • 相关阅读:
    Anaconda使用命令
    排序算法3--插入排序--希尔排序(缩小增量排序)
    排序算法2--插入排序--折半插入排序
    排序算法1--插入排序--直接插入排序
    排序总结---常用的排序算法总结,java和js实现
    前端兼容性问题
    js对象的几种创建方式和js实现继承的方式[转]
    js原型和原型链[转]
    性能优化的方法
    Http状态码
  • 原文地址:https://www.cnblogs.com/zhoujg/p/1596482.html
Copyright © 2020-2023  润新知