• 【金蝶K3Cloud】 树形控件


      1 树形控件添加到动态表单(或单据等)界面上之后,通过重载界面插件的如下两个事件实现功能:
      2 1. TreeLoadData 事件:在此事件中构建树节点
      3 2. TreeNodeClick 事件:在此事件中响应用户点击树节点动作
      4 
      5 如下代码演示如何在基础资料的列表界面,如何自行构建左边的分组树节点;用户点击分组之后,如何过滤基础资料数据:
      6 
      7 using System;
      8 using System.Collections.Generic;
      9 using System.Linq;
     10 using System.Text;
     11 using System.ComponentModel;
     12 using Kingdee.BOS;
     13 using Kingdee.BOS.Util;
     14 using Kingdee.BOS.Core;
     15 using Kingdee.BOS.Core.DynamicForm.PlugIn;
     16 using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
     17 using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
     18 using Kingdee.BOS.Core.List;
     19 using Kingdee.BOS.Core.List.PlugIn;
     20 using Kingdee.BOS.Core.List.PlugIn.Args;
     21 using Kingdee.BOS.Core.Metadata;
     22 using Kingdee.BOS.Orm.DataEntity;
     23 namespace JDSample.FormPlugIn.BaseData
     24 {
     25     /// <summary>
     26     /// 多层次基础资料列表插件
     27     /// </summary>
     28     /// <remarks>
     29     /// 演示用基础资料:
     30     /// FormId : 08441f27-444c-43ee-bed9-8498a1ff066c
     31     /// 基类:1.1 不受组织控制基础资料模板(BOS_NoOrgControlBDModel)
     32     /// 名称:资料类别
     33     /// 包含的字段:
     34     /// 1. 上级资料 F_JD_ParentId
     35     /// 2. 编码 FNumber
     36     /// 3. 名称 FName
     37     /// 4. 完整父节点内码 F_JD_FullParentId (由各级父节点内码组成,如(.1001.1002.1003,以便根据当前节点,快速找出所有下级节点)
     38     /// </remarks>
     39     [Description("多层次基础资料列表插件")]
     40     public class MulLevelBaseDataList : AbstractListPlugIn
     41     {
     42         private TreeNode _groupRootNode = null;
     43         /// <summary>
     44         /// 界面请求构建树节点事件;拦截此事件,自行构建树节点
     45         /// </summary>
     46         /// <param name="e"></param>
     47         public override void TreeLoadData(TreeLoadDataArgs e)
     48         {
     49             TreeView tv = this.View.GetControl<TreeView>("FGroupTreeView");
     50             var parentNode = BuildTreeNode(this.Context, this.View.BillBusinessInfo);
     51             tv.SetRootNode(parentNode);
     52             tv.SetExpanded(true);
     53             // 略过系统预置取分组树的功能
     54             e.Cancel  = true;
     55         }
     56         /// <summary>
     57         /// 用户点击树节点事件:
     58         /// 拦截此事件,根据用户所选节点,设置过滤条件,筛选列表数据
     59         /// </summary>
     60         /// <param name="e"></param>
     61         public override void TreeNodeClick(TreeNodeArgs e)
     62         {
     63             TreeViewFilterParameter filterParameter = ((ITreeListModel)this.Model).TreeViewFilterParameter as TreeViewFilterParameter;
     64             filterParameter.FilterString = string.Empty;        // 分组过滤条件
     65             filterParameter.IgnoreSelectedGroupIds = false;     // 是否忽略默认的分组过滤处理
     66             if (e.NodeId == "0")
     67             {
     68                 // 点击根节点,无需设置分组过滤条件
     69                 return;
     70             }
     71             // 拼接分组过滤条件:资料类别 = 本节点,以及本节点的全部下级节点
     72             string filter = string.Format(" (FID = {0} OR F_JD_FullParentId LIKE '%.{0}.%') ", e.NodeId);
     73             // 采用二开设置的分组过滤条件,忽略系统默认的分组过滤
     74             filterParameter.FilterString = filter;
     75             filterParameter.IgnoreSelectedGroupIds = true;
     76         }
     77         public static TreeNode BuildTreeNode(Context ctx, BusinessInfo groupInfo)
     78         {
     79             // 构建根目录
     80             TreeNode rootNode = new TreeNode();
     81             rootNode.id = "0";
     82             rootNode.parentid = "0";
     83             rootNode.text = "全部";
     84             // 读取全部资料分类数据
     85             List<SelectorItemInfo> selectorList = new List<SelectorItemInfo>();
     86             selectorList.Add(new SelectorItemInfo("FID"));
     87             selectorList.Add(new SelectorItemInfo("F_JD_ParentId"));
     88             selectorList.Add(new SelectorItemInfo("FNumber"));
     89             selectorList.Add(new SelectorItemInfo("FName"));
     90             var infoGroups = Kingdee.BOS.ServiceHelper.BusinessDataServiceHelper.Load(
     91                             ctx,
     92                             groupInfo, 
     93                             selectorList,
     94                             OQLFilter.CreateHeadEntityFilter(""));
     95             
     96             if (infoGroups == null || infoGroups.Length == 0) return rootNode;
     97             // 把各资料分类,转换为树节点,并放在字典中
     98             Dictionary<string, TreeNode> dctNodes = new Dictionary<string, TreeNode>();
     99             foreach (var infoGroup in infoGroups)
    100             {
    101                 long id = Convert.ToInt64(infoGroup["Id"]);
    102                 long parentId = Convert.ToInt64(infoGroup["F_JD_ParentId_Id"]);
    103                 string number = Convert.ToString(infoGroup["Number"]);
    104                 string name = Convert.ToString(infoGroup["Name"]);
    105                 TreeNode node = new TreeNode() 
    106                 { 
    107                     id = id.ToString(), 
    108                     text = string.Format("{0}({1})", name, number),
    109                     parentid = parentId.ToString(),
    110                 };
    111                 dctNodes.Add(id.ToString(), node);
    112             }
    113             // 把各节点,放在其父节点下面
    114             foreach (var item in dctNodes)
    115             {
    116                 TreeNode node = item.Value;
    117                 if (node.parentid == "0")
    118                 {
    119                     rootNode.children.Add(node);
    120                 }
    121                 else if (dctNodes.Keys.Contains(node.parentid))
    122                 {
    123                     dctNodes[node.parentid].children.Add(node);
    124                 }
    125             }
    126             return rootNode;
    127         }
    128     }
    129 }
  • 相关阅读:
    20135316王剑桥 linux第十一周课实验笔记
    20135316王剑桥 linux第十周课实验笔记
    20135316王剑桥 linux第七周课实验笔记
    0
    KRPANO资源分析工具下载四方环视全景图
    KRPANO资源分析工具下载720YUN全景图
    使用JAVA调用KRPANO加密XML
    KRPano JS 场景编辑器源码
    KRPano多屏互动原理
    KRPANO PR10最新激活码(破解)分享
  • 原文地址:https://www.cnblogs.com/jlz-s/p/9830081.html
Copyright © 2020-2023  润新知