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

目前支持列表编辑方式主要有两种:非树形列表树形列表

类图如下:

o_listEditor.jpg

2009110210462177.jpg

2009110215164149.jpg

列表为ListEditor,树形列表TreeListEditor继承ListEditor。对应于各个属性编辑器有一个对应的GridColumn和TreeColumn,各个内部都引用了PropertyEditor。

下面分别对非树形和树形列表两种编辑方式进行简要说明,以便大家对它们的使用有所了解。

1 非树形列表

1.1 运行界面

2009110211114944.jpg

1.2 类库编写

1.2.1  显示在主表列表中

    [Serializable]
    
public   partial   class  UnitFactorList : GBusinessListBase < UnitFactorList, UnitFactor >
    {
        region  Factory Methods

        region  Data Access

        region Business Methods
 
    }

1.2.2  显示在细表中

         private   static  PropertyInfo < PBSs >  PBSsProperty  =
          RegisterProperty(
new  PropertyInfo < PBSs > ( " PBSs " ));
        [Association]   //关联类型对象会自动在一个细表页签显示为列表类型
        
public  PBSs PBSs
        {
            
get
            {
                
if  ( ! FieldManager.FieldExists(PBSsProperty))
                {
                    LoadProperty(PBSsProperty, PBSs.NewChild());
                }
                
return  GetProperty(PBSsProperty);
            }
        }

 

1.2.3 显示在下拉列表中

        [Column]
        [EntityProperty]
        [ShowInList, ShowInDetail, Label(
" 指标模板 " )]
        [Lookup(
"IndicatorType" )]   //关联对象属性名称,此类型会自动生成下拉编辑方式
        
public  Guid ?  IndicatorTypeId
        {
            
get  {  return  GetProperty(IndicatorTypeIdProperty); }
            
set  { SetProperty(IndicatorTypeIdProperty, value); }
        }
 
        [NotUndoable()]
        
private  IndicatorType indicatorType;
        
public  IndicatorType IndicatorType  // 关联对象
        {
            
get  {  return  indicatorType; }
            
set  { indicatorType  =  value; }
        }

 

2 树形列表

2.1 运行界面

2009110211163259.jpg

2.2 类库编写

2.2.1 单个对象

    [Serializable]
    [Table]
    [BusinessObject(Direction 
=  Direction.Horizontal), Label( " PBS " )]
    
public   class  PBS : GBusinessBase < PBS > ITreeNode   //实现了ITreeNode的类会自动根据树形样式显示
    {
    ...
    }

2.2.2 多个对象

         private   static  PropertyInfo < CBFBFXBQItems >  CBFBFXBQItemsProperty  =
          RegisterProperty(
new  PropertyInfo < CBFBFXBQItems > ( " CBFBFXBQItems " ));
        [Association(ShowInTree 
= true )]  //ShowInTree为True时,子对象自动合并到父对象中显示为树形列表
        
public  CBFBFXBQItems CBFBFXBQItems
        {
            
get
            {
                
if  ( ! FieldManager.FieldExists(CBFBFXBQItemsProperty))
                {
                    LoadProperty(CBFBFXBQItemsProperty, CBFBFXBQItems.NewChild());
                }
                
return  GetProperty(CBFBFXBQItemsProperty);
            }
        }

 

树形样式和列表样式一样,可以显示在主表列表、细表和下拉列表类型中,这里就不再重复写出类库,下面只说明一下如何根据根对象PId来过滤树

2.2.3 指定树形列表根对象ID

有时下拉树中会要求过滤部分记录,需要指定根对象PId,类库编写如下:

       private   static  PropertyInfo < Guid ?>  PBSIdProperty  =
          RegisterProperty(
new  PropertyInfo < Guid ?> ( " PBSId " ));
        [Column]
        [EntityProperty]
        [ShowInList, ShowInDetail, Label(
" PBS " )]
        [Lookup(
" PBS " , DataSourceProperty  =   " ContractBudget.Contract.PBSList " ,
        RootPId 
=   " PBSRootPId " )]//RootPId指定树形显示过滤根对象PId
        
public  Guid ?  PBSId
        {
            
get  {  return  GetProperty(PBSIdProperty); }
            
set
            {
                SetProperty(PBSIdProperty, value);
      ...
            }
        }

        
///   <summary>
        
///  如果父标题设置了PBS,则当前标题只显示父标题PBS的子PBS
        
///   </summary>
        [Browsable( false )]
        
public   object  PBSRootPId
        {
            
get
            {
                
if  (( null   !=  parentNode)  &&  ( null   !=  parentNode.PBSId))
                    
return  parentNode.PBSId;
                
else
                    
return   null ;
            }
        }

        [NotUndoable()]
        
private  PBS pBS;
        
public  PBS PBS
        {
            
get  {  return  pBS; }
            
set
            {
                pBS 
=  value;
                OnPropertyChanged(
" PBS " );
            }
        }

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值