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

表达式编辑器的简单实现(多语言动态文本控件使用)

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

表达式编辑器的简单实现(多语言动态文本控件使用)

场景需求

1、表达式编辑器,如:{字段1}+{字段2}={字段3}

2、条件编辑器,如:IF ({字段1}=true AND {字段2}=true ) {字段4}={字段5}

3、内容编辑器,如:您的采购订单{单号}已审核通过,请及时查看。

等其他需求场景,这种表达式编辑器二开常规思路都是根据文本内容光标定位位置插入按钮事件触发的文本,这种方案二开繁琐,而且标准产品无法支持获取文本内容里的光标位置的服务端交互


解决方案:

使用多语言动态文本控件满足该场景使用,一个控件就能完成该编辑器,无需放很多按钮控件组合,插件获取该控件数值,进行字段值的解析替换即可(标准产品使用实例:监控方案的消息设置)


多语言动态文本控件录入:

该控件使用时,是根据输入的“{”自动弹出设置好的下拉字段列表进行选择,非“{}”符号的输入不会自动检测,正常文本内容输入即可,构造完整的表达式


多语言动态文本控件二开实现:

该控件由于在BOS设计器的字段里面无法找到该控件,所以需要借助构建插件进行构造该前端控件,

1、在BOS设计器中拖一个多语言文本字段到表单上,并且勾选属性“是否多行录入”,并且修改可编辑长度属性,根据实际需求进行修改,即可改变该控件的设计高度

2、表单注册构建插件,插件实例代码(假设该控件命名FMultiLangDynamicText):

public override void CreateControl(Core.DynamicForm.PlugIn.Args.CreateControlEventArgs e)
        {
            if (e.ControlAppearance.Key.EqualsIgnoreCase("FMultiLangDynamicText"))
            {
                e.Control["xtype"] = "kditemcontainer";
                JSONObject item = e.Control["item"] as JSONObject;
                if (item != null)
                {
                    item["xtype"] = "kdmultilingualdynamictext";
                    item["showEditButton"] = true;
                }
            }
            base.CreateControl(e);
        }

3、表单插件里面增加方法,该方法是构造控件输入“{”时触发下拉的字段列表数据源

        private void SetDynamicTextData()
        {
            //设置动态文本数据源
            JSONArray dataarray = new JSONArray();
            JSONArray itemarray = new JSONArray();
            int order = 0;
            for (int i = 0; i < 8; i++)
            {
                itemarray = new JSONArray();
                itemarray.Add("芯数");//显示动态文本选择字段的第3列-Type
                itemarray.Add("XS" + i.ToString());//显示动态文本选择字段的第1列-Number
                itemarray.Add("@芯数" + i.ToString());//显示动态文本选择字段的第2列-Name
                itemarray.Add(order.ToString());//在显示动态文本选择字段里是隐藏的,作为每一行的隐藏ID
                order++;
                dataarray.Add(itemarray);
            }
            for (int i = 0; i < 4; i++)
            {
                itemarray = new JSONArray();
                itemarray.Add("截面");//显示动态文本选择字段的第3列-Type
                itemarray.Add("JM" + i.ToString());//显示动态文本选择字段的第1列-Number
                itemarray.Add("@截面" + i.ToString());//显示动态文本选择字段的第2列-Name
                itemarray.Add(order.ToString());//在显示动态文本选择字段里是隐藏的,作为每一行的隐藏ID
                order++;
                dataarray.Add(itemarray);
            }
            //增加运算符
            //AND
            itemarray = new JSONArray();
            itemarray.Add("运算符");
            itemarray.Add("AND");
            itemarray.Add("AND");
            itemarray.Add(order.ToString());
            order++;
            dataarray.Add(itemarray);
            //OR
            itemarray = new JSONArray();
            itemarray.Add("运算符");
            itemarray.Add("OR");
            itemarray.Add("OR");
            itemarray.Add(order.ToString());
            order++;
            dataarray.Ad

表达式编辑器的简单实现(多语言动态文本控件使用)

场景需求:1、表达式编辑器,如:{字段1}+{字段2}={字段3}2、条件编辑器,如:IF ({字段1}=true AND {字段2}=true ) {字段4}={字段5...
点击下载文档文档为doc格式

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

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