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

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

类图如下:

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

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

1 非树形列表

1.1 运行界面

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 运行界面

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");
            }
        }
复制代码

 

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

posted on   周 金根  阅读(2994)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!

导航

点击右上角即可分享
微信分享提示