二开案例.分组.添加分组

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

二开案例.分组.添加分组

【应用场景】后台添加分组数据。

【案例演示】物料列表,添加菜单,点击菜单后后台添加新的分组。

【实现步骤】

<1>编写列表插件,代码如下。

using Kingdee.BOS;

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

using Kingdee.BOS.Core.List;

using Kingdee.BOS.Core.List.PlugIn;

using Kingdee.BOS.Core.Metadata;

using Kingdee.BOS.Orm.DataEntity;

using Kingdee.BOS.ServiceHelper;

using Kingdee.BOS.Util;

using System;

using System.Collections.Generic;

using System.ComponentModel;


namespace Jac.XkDemo.BOS.Business.PlugIn

{

    /// <summary>

    /// 【列表插件】添加分组数据

    /// </summary>

    [HotUpdate]

    [Description("【列表插件】添加分组数据")]

    public class AddGroupDataListPlugIn : AbstractListPlugIn

    {

        /// <summary>

        /// 分组表表名

        /// </summary>

        const string GroupTableName = "T_BD_MATERIALGROUP";


        /// <summary>

        /// 分组Id

        /// </summary>

        const string GroupId = "d82dac3f-43fa-4fce-9b7f-9e3280abd0d8";


        public override void BarItemClick(BarItemClickEventArgs e)

        {

            base.BarItemClick(e);

            if (e.BarItemKey.EqualsIgnoreCase("tbAddGroupData"))

            {

                var model = this.Model as ITreeListModel;

                if (model != null)

                {

                    // 获取列表上的分组树的当前被选中的节点

                    var currGroupParentId = model.CurrGroupParentId;

                    AddGroupData(currGroupParentId == null ? 0 : Convert.ToInt32(currGroupParentId), "666", "我是测试节点");

                }

            }

        }


        /// <summary>

        /// 添加分组数据

        /// </summary>

        /// <param name="parentId">父分组内码</param>

        /// <param name="number">分组编码</param>

        /// <param name="name">分组名称</param>

        private void AddGroupData(int parentId, string number, string name)

        {

            var metaData = (FormMetadata)MetaDataServiceHelper.Load(this.Context, "BOS_FORMGROUP");

            // 创建数据分组元数据的副本,这一行代码很重要,因为不允许直接修改元数据,但是可以修改元数据的副本

            metaData = (FormMetadata)ObjectUtils.CreateCopy(metaData);

            metaData.BusinessInfo.GetEntity("FBillHead").TableName = GroupTableName;

            var dynamicObjectType = metaData.BusinessInfo.GetDynamicObjectType(true);

            var dataObject = new DynamicObject(dynamicObjectType);

            dataObject["GroupId"] = GroupId;

            dataObject["Number"] = number;

            dataObject["Name"] = new LocaleValue(name, 2052);

            dataObject["Description"] = new LocaleValue(name, 2052);

            dataObject["ParentId"] = parentId;

            dataObject["FullParentId"] = GetFullParentId(parentId);

            var objFromDb = BusinessDataServiceHelper.Save(this.Context, metaData.BusinessInfo, new DynamicObject[] { dataObject }, "Save");

            this.View.ShowMessage("分组数据已添加");

        }


        /// <summary>

        /// 获取父节点全路径

        /// </summary>

        /// <param name="parentId"></param>

        /// <returns></returns>

        private string GetFullParentId(int parentId)

        {

            if (parentId <= 0)

            {

                return " ";

            }

            var sql = string.Format("SELECT FFULLPARENTID FROM {0} WHERE FID = @FID", GroupTableName);

            var lstParams = new List<SqlParam>();

            lstParams.Add(new SqlParam("@FID", KDDbType.Int32, parentId));

            var fullParentId = DBServiceHelper.ExecuteScalar<string>(this.Context, sql, "", lstParams.ToArray());

            return string.Format("{0}.{1}", fullParentId.Trim(), parentId);

        }

    }

}


<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


<3>BOSIDE扩展物料,添加列表菜单,如下图。


<4>物料注册列表插件,如下图,保存元数据,开发完毕。


现在可以登录业务站点,打开物料列表,检验一下插件效果啦。






知识点

<1>获取分组表名:

<2>获取GroupId:

<3>分组主要涉及三张数据表格,下面以物料分组为例进行说明:

-- 分组数据主表

SELECT * FROM T_BD_MATERIALGROUP

-- 分组数据多语言表

SELECT * FROM T_BD_MATERIALGROUP_L

-- 分组数据对应的分组级次表(账表分组汇总会用到此表的数据)

SELECT * FROM T_BD_MATERIALGROUPLEVEL















【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696


二开案例.分组.添加分组

【应用场景】后台添加分组数据。【案例演示】物料列表,添加菜单,点击菜单后后台添加新的分组。【实现步骤】<1>编写列表插件,代码如下。u...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息