二开案例.大文本.大文本字段赋值

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

二开案例.大文本.大文本字段赋值

【应用场景】使用插件给大文本字段赋值。

【案例演示】采购订单,单据头和单据体都新增一个大文本字段,通过插件给大文本字段赋值。

【实现步骤】

<1>编写单据插件,实现大文本字段赋值的功能。

using Kingdee.BOS.Core.Bill.PlugIn;

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

using Kingdee.BOS.Core.Metadata.FieldElement;

using Kingdee.BOS.Orm.DataEntity;

using Kingdee.BOS.Util;

using System;

using System.ComponentModel;


namespace Jac.XkDemo.BOS.Business.PlugIn

{

    /// <summary>

    /// 【单据插件】大文本字段赋值

    /// </summary>

    [Description("【单据插件】大文本字段赋值"), HotUpdate]

    public class LargeTextFieldSetValueBillPlugIn : AbstractBillPlugIn

    {

        /// <summary>

        /// 单据头大文本字段赋值

        /// </summary>

        /// <param name="e"></param>

        public override void BarItemClick(BarItemClickEventArgs e)

        {

            base.BarItemClick(e);

            var key = "F_Jac_LargeText1";

            var dtNow = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

            var dtNowTick = DateTime.Now.Ticks.ToString();

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

            {

                // 给大文本字段的摘要赋值

                this.View.Model.SetValue(key, dtNow);

                // 给大文本的详细信息赋值

                var field = (LargeTextField)this.View.BillBusinessInfo.GetField(key);

                field.TagDynamicProperty.SetValue(this.View.Model.DataObject, dtNowTick.GetUtf8Bytes());

                this.View.UpdateView(key);

            }


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

            {

                var field = (LargeTextField)this.View.BillBusinessInfo.GetField(key);

                // 给大文本字段的摘要赋值

                field.DynamicProperty.SetValue(this.View.Model.DataObject, dtNow);

                // 给大文本的详细信息赋值

                field.TagDynamicProperty.SetValue(this.View.Model.DataObject, dtNowTick.GetUtf8Bytes());

                this.View.UpdateView(key);

            }

        }


        /// <summary>

        /// 单据体大文本字段赋值

        /// </summary>

        /// <param name="e"></param>

        public override void EntryBarItemClick(BarItemClickEventArgs e)

        {

            base.EntryBarItemClick(e);

            // 获取采购订单.明细信息的当前选中行数据包

            DynamicObject entryRowObj;

            int currentRowIndex;

            if (!this.View.Model.TryGetEntryCurrentRow("FPOOrderEntry", out entryRowObj, out currentRowIndex))

            {

                return;

            }


            var key = "F_Jac_LargeText2";

            var dtNow = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

            var dtNowTick = DateTime.Now.Ticks.ToString();

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

            {

                // 给大文本字段的摘要赋值

                this.View.Model.SetValue(key, dtNow, currentRowIndex);

                // 给大文本的详细信息赋值

                var field = (LargeTextField)this.View.BillBusinessInfo.GetField(key);

                field.TagDynamicProperty.SetValue(entryRowObj, dtNowTick.GetUtf8Bytes());

            }


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

            {

                var field = (LargeTextField)this.View.BillBusinessInfo.GetField(key);

                // 给大文本字段的摘要赋值

                field.DynamicProperty.SetValue(entryRowObj, dtNow);

                // 给大文本的详细信息赋值

                field.TagDynamicProperty.SetValue(entryRowObj, dtNowTick.GetUtf8Bytes());

                this.View.UpdateView(key, currentRowIndex);

            }

        }

    }

}


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


<3>登录BOSIDE,扩展采购订单,单据头和单据体分别新增一个大文本字段(F_Jac_LargeText1,F_Jac_LargeText2)。


<4>采购订单的菜单集合新增两个菜单,用于给单据头的大文本字段赋值,如下图所示。


<5>采购订单的明细信息单据体的菜单集合新增两个菜单,用于给单据体的大文本字段赋值,如下图所示。


<6>采购订单注册表单插件,保存元数据,开发完毕。


现在可以登录业务站点,打开采购订单,检验一下插件的运行效果啦。

给单据头的大文本字段赋值:

给单据体的大文本字段赋值:




【知识点】

<1>大文本字段由两部分组成:摘要和详细信息,对应在数据库表中也被拆分成两个字段存储数据。

例如字段F_Jac_LargeText1,在数据库表中被拆分为F_Jac_LargeText1 nvarchar(255)F_Jac_LargeText1_Tag image


<2>因为大文本字段由两段组成,所以大文本赋值也是分两段完成的,给摘要赋值和给详细内容赋值是完全分开进行的。


<3>大文本的详细信息是使用字节数组存储的,所以SetValue前需要调用GetUtf8Bytes方法将字符串转换成UTF-8编码的字节数组。














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

二开案例.大文本.大文本字段赋值

【应用场景】使用插件给大文本字段赋值。【案例演示】采购订单,单据头和单据体都新增一个大文本字段,通过插件给大文本字段赋值。【实现步...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息