电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

二开案例.单据插件.公式编辑器

来源:金蝶云社区作者:金蝶2024-09-237

二开案例.单据插件.公式编辑器

【应用场景】

通过界面鼠标操作完成计算公式的编辑。


【案例演示】

采购订单,编辑界面,通过公式编辑器生成自定义公式。

【实现步骤】

<1>编写单据插件,代码如下。

using Kingdee.BOS.Core.Bill.PlugIn;

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

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

using Kingdee.BOS.Core.Metadata;

using Kingdee.BOS.Core.Metadata.EntityElement;

using Kingdee.BOS.Core.Metadata.FieldElement;

using Kingdee.BOS.Formula;

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>

    [Description("【单据插件】公式编辑器"), HotUpdate]

    public class ExpressionEditorBillPlugIn : AbstractBillPlugIn

    {

        public override void BarItemClick(BarItemClickEventArgs e)

        {

            base.BarItemClick(e);

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

            {

                // 读取公式信息

                var expValue = (string)this.View.Model.GetValue("F_Jac_Expression");

                if (!expValue.IsNullOrEmpty())

                {

                    var expText = FormulaUtils.GetFormulaText(expValue, FormulaUtils.GetProvider(string.Empty));

                    var expDisplayText = FormulaUtils.GetFormulaDisplayText(expValue, FormulaUtils.GetProvider(string.Empty));

                    this.View.ShowMessage(string.Format("公式:{0}\r\n公式描述:{1}", expText, expDisplayText));

                }

            }

        }


        public override void AfterBindData(EventArgs e)

        {

            base.AfterBindData(e);

            BindTree();

        }


        /// <summary>

        /// 公式编辑器初始化左边的树

        /// </summary>

        private void BindTree()

        {

            var expressionEditor = this.View.GetControl<ExpressionEditor>("F_Jac_Expression");

            // 公式编辑器绑定已有公式

            var expValue = (string)this.View.Model.GetValue("F_Jac_Expression");

            if (!expValue.IsNullOrEmpty())

            {

                expressionEditor.SetData(expValue);

            }

            else

            {

                expressionEditor.SetData("");

            }


            var formId = this.View.BillBusinessInfo.GetForm().Id;

            var expConfigData = new ExpConfigData();

            var nodes = new List<ExpPreItemNode>();

            nodes.Add(GetNode(formId));

            // 添加业务对象节点

            expConfigData.itemstore = nodes;

            //// 添加函数

            //var lstFunctions = new List<ExpPreItemNode>();

            //lstFunctions.Add(new ExpPreItemNode

            //{

            //    id = "sum()",

            //    text = "求和",

            //    desc = "求和"

            //});

            //lstFunctions.Add(new ExpPreItemNode

            //{

            //    id = "avg()",

            //    text = "计算平均值",

            //    desc = "计算平均值"

            //});

            //expConfigData.functionsstore = lstFunctions;

            //// 添加操作符

            //var lstOperators = new List<ExpPreItemNode>();

            //lstOperators.Add(new ExpPreItemNode

            //{

            //    id = "[",

            //    text = "左中括号",

            //    desc = "左中括号"

            //});

            //lstOperators.Add(new ExpPreItemNode

            //{

            //    id = "]",

            //    text = "右中括号",

            //    desc = "右中括号"

            //});

            //expConfigData.operatorsstore = lstOperators;

            //// 添加变量

            //var lstVariables = new List<ExpPreItemNode>();

            //lstVariables.Add(new ExpPreItemNode

            //{

            //    id = "CurrentUser",

            //    text = "当前用户",

            //    desc = "当前用户"

            //});

            //lstVariables.Add(new ExpPreItemNode

            //{

            //    id = "CurrentOrg",

            //    text = "当前组织",

            //    desc = "当前组织"

            //});

            //expConfigData.privatevarstore = lstVariables;


            // 公式编辑器绑定左侧的节点树的数据源

            expressionEditor.SetStore(expConfigData);

        }


        /// <summary>

        /// 获取业务对象分层展开的节点树

        /// </summary>

        /// <param name="formId"></param>

        /// <returns></returns>

        private ExpPreItemNode

二开案例.单据插件.公式编辑器

【应用场景】通过界面鼠标操作完成计算公式的编辑。【案例演示】采购订单,编辑界面,通过公式编辑器生成自定义公式。【实现步骤】<1>编写...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信