二开案例.表单插件.二维码

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

二开案例.表单插件.二维码

【应用场景】

将文本转成为二维码(QRCode),并显示在界面上。



【案例演示】

采购订单新增3个二维码控件,演示使用不同的数据源显示二维码。



【实现步骤】

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

using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.Metadata.ControlElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
    /// <summary>
    /// 【表单插件】二维码
    /// https://vip.kingdee.com/article/121261160640374528
    /// </summary>
    [Description("【表单插件】二维码"), HotUpdate]
    public class QRCodeFormPlugIn : AbstractDynamicFormPlugIn
    {
        public override void AfterBindData(EventArgs e)
        {
            base.AfterBindData(e);
            // 注意:自定义二维码文本必须以标记[Customer]开头。
            var qrCodeContent = string.Format("[Customer]单据编号:{0},采购日期:{1},供应商:{2}"
                , this.Model.GetValue("FBillNo"), Convert.ToDateTime(this.Model.GetValue("FDate")).ToString("yyyy-MM-dd"), ((DynamicObject)this.Model.GetValue("FSupplierId"))["Name"]);
            var qrCode = (BarcodeAppearance)this.View.LayoutInfo.GetControlAppearance("F_Jac_Barcode2");
            qrCode.DataBound = qrCodeContent;
            this.View.UpdateView("F_Jac_Barcode2");
        }
        ///// <summary>
        ///// 直接将二维码指向某个图片
        ///// </summary>
        //private void SetQRCodeImage()
        //{
        //    var dataBinderProperty = this.View.GetType().GetProperty("DataBinder", BindingFlags.Instance | BindingFlags.NonPublic);
        //    var dataBinder = dataBinderProperty.GetValue(this.View, null);
        //    var formStateProperty = typeof (DataBinder).GetProperty("FormState", BindingFlags.Instance | BindingFlags.NonPublic);
        //    var formState = formStateProperty.GetValue(dataBinder, null);
        //    var setPropertyMethod = typeof(DynamicWebFormState).GetMethod("SetProperty", BindingFlags.Instance | BindingFlags.NonPublic);
        //    var qrCode = (BarcodeAppearance) this.View.LayoutInfo.GetControlAppearance("F_Jac_Barcode2");
        //    setPropertyMethod.Invoke(formState, new object[] { qrCode, -1, "SourceUrl", "http://localhost:1600/k3cloud/images/top.webp" });
        //}
    }
}


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


<3>BOSIDE扩展采购订单,新增页签,拖3个组合字段到新增页签,数据源分别设置如下图所示,注册表单插件,保存元数据,开发完毕。

使用单据字段做数据源:

使用固定文本做数据源:

设计时不设置数据源,运行时使用插件设置数据源:



【功能验证】

登录业务站点,打开采购订单编辑界面,二维码控件的显示效果如下图。

---------------------------------------------------------------------------------------------------------













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


二开案例.表单插件.二维码

【应用场景】将文本转成为二维码(QRCode),并显示在界面上。【案例演示】采购订单新增3个二维码控件,演示使用不同的数据源显示二维码。【...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息