树形单据体的应用说明(可以参考生产订单单据体的使用)

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:2

 树形单据体的应用说明(可以参考生产订单单据体的使用)

 树形单据体的应用说明(可以参考生产订单单据体的使用)

 

1、BOSIDE制作单据,支持动态表单,单据,基础资料,报表等域模型。

2、添加列,和原来单据体一样。

3、设置主键列名,父级主键字段名,行类型字段名,节点图片字段名(没有可以为空) 

-- 特别注意

3.1、主键、父级主键、行类型等关键字段不能用于界面录入,必须由后台二开插件分配好值数据,尤其主键不能为空也不能重复,因为树的构造依赖主键和父级主键字段,因此这些字段必须设置为锁定且不可见字段,避免因录入错误数据而导致树形单据体算法错误。

3.2、主键填值不能重复--树主键重复会导致整棵树构建失败;

3.3、主键与父级主键的参考引用不能构成循环引用,一旦循环引用主键会导致整棵树构建失败;

4、运行时与单据体基本一致,只是支持行展开; 

image.webp

5、数据库数据结构,其中FEntryID,FParentID,FRowType是必须的。 

6、行类型配置FRowType的枚举如下:

/// <summary>

/// 应用到RowType字段上,支持多种状态组合。

/// </summary>

public enum ENUM_ROWTYPE

{

    Default = 0,

    Header = 1,/// 0000 0000 0001,表头类型数据行

 

    Normal = 16,///0000 0001 0000,普通数据行

    Expand = 32,///0000 0010 0000,触发服务器展开数据行

    ExpandWaiting = 64,///0000 0100 0000,包含展开等待数据请求行

    Summary = 128///0001 0000 000,汇总类型数据行

}

 

7、对于Expand = 32,///0000 0010 0000,包含展开控件数据行

如果配置这种类型,客户端自动生成ExpandWaiting类型的下级行,并在展开是会发送ExpendingRow(EntryKey, RowIndex)事件到服务端请求数据,因此,返回数据后,务必把这一行数据修改为16,也就是修改成Normol类型。

 

8、动态表单的树表设置

 


9、特别注意

* 如果主键设置的不是内置的FEntryID,那么该字段必须在表格里面存在列,否则会出现数据错位情况。 

* 动态展开树表控件的某个节点( TreeEntry )展开指定树表控件的某一行节点:

this.View.GetControl<TreeEntryGrid>(Key).ExpandedRow(rowIndex);

* 收起某个指定树表控件的某一行节点

this.View.GetControl<TreeEntryGrid>(Key).CollapsedRow(rowIndex);

image.webp


py源码:

def BarItemClick(e):

if(e.BarItemKey=='tbFilter'):

this.View.GetControl("FBOTTOMENTITY").CollapsedRow(2)

this.View.SendDynamicFormAction(this.View)


10、运行时展示 的数据怎么处理的?各种键值数据都是手工录入的吗?还是手工生成的。我的单据是增加了FRowId;

答:

1. 请在单据体中,添加一个文本字段,唯一标识设置为 : FRowId

2. 树形单据体的"主键字段名称",填写为 FRowId


树形单据体的"分录主键",与"主键字段名称"两个属性,是两回事,但是命名上有些接近,容易混淆。


11、使用PY实现树形单据体全展开或收起(请权衡性能和功能)

全部展开时,由于界面渲染和数据量原因,可能存在一定的性能问题,因此请使用该功能的同学务必权衡好,避免为了功能导致引发性能问题。

a、在BOSIDE中脱出一个Button按钮控件,修改标识为FBTNEA;
b、在表单业务插件增加Py插件,写入如下代码:

def ButtonClick(e):

    if (e.Key=='FBTNEA'):

        rowCount = this.View.Model.GetEntryRowCount("FEntity")

        for i in range(0, rowCount):

            this.View.GetControl("FEntity").ExpandedRow(i)

    if (e.Key=='FBTNCA'):

        rowCount = this.View.Model.GetEntryRowCount("FEntity")

        for i in range(0, rowCount):

            this.View.GetControl("FEntity").CollapsedRow(i)

c、发布表单,点击按钮即可看到全展开效果;


树形单据体的应用说明(可以参考生产订单单据体的使用)

树形单据体的应用说明(可以参考生产订单单据体的使用) 1、BOSIDE制作单据,支持动态表单,单据,基础资料,报表等域模型。2、添加列,和...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息