【客户需求】即时库存按照物料分组树型多级显示

需求背景
很多客户用习惯了K3,希望星空的即时库存也能实现按照物料分组左侧来进行树形结构展示。
实现说明
系统中即时库存主要涉及的场景为:即时库存查询、即时库存明细查询、单据联查即时库存。
以下方法借助基础资料的分组属性实现即时库存明细查询、单据联查即时库存树形结构展示。
实现效果


步骤:
1.扩展即时库存,增加基础资料字段(如下图)
字段名:空
可见性:不可见
基础资料类型:数据分组
支持分组:勾选
分组允许维护:不勾选

2.即时库存编写列表插件,重载实现GetTreeViewData、TreeNodeClick方法。
Demo:如下
#region 构造节点
//<summary>
//获取节点(系统会自动往树立添加的)
//</summary>
//<param name="treeNodeArgs"></param>
//<returns></returns>
public override List<TreeNode> GetTreeViewData(TreeNodeArgs treeNodeArgs)
{
if (string.IsNullOrEmpty(treeNodeArgs.NodeId) || treeNodeArgs.NodeId == "0")
{
string sql = string.Format(" SELECT MG.FID,FNUMBER,FGROUPID,FPARENTID,MGL.FNAME from T_BD_MATERIALGROUP MG INNER JOIN T_BD_MATERIALGROUP_L MGL ON MG.FID = MGL.FID WHERE MGL.FLOCALEID = {0} ",this.View.Context.UserLocale.LCID);
DynamicObjectCollection nodeList = DBUtils.ExecuteDynamicObject(this.View.Context,sql);
Dictionary<string, TreeNode> _treeNodes = new Dictionary<string, TreeNode>();
List<TreeNode> treeNodes = new List<TreeNode>();
foreach (DynamicObject node in nodeList)
{
if (Convert.ToString(node["FPARENTID"]).Equals("0"))
{
treeNodes.Add( new TreeNode()
{
id = node["FID"].ToString().Trim(),
parentid = node["FPARENTID"].ToString().Trim(),
xtype = "system",
text = node["FNAME"].ToString().Trim(),
children = GetSubNode(nodeList, node["FID"].ToString().Trim())
}
【客户需求】即时库存按照物料分组树型多级显示
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



