二开案例.让单据体文本字段转成二维码--转载

【应用场景】
二维码是控件,不是字段,无法将它加入到单据体中,如果单据体中有某个字段的值要转成二维码,目前可通过插件的方式,实时转换并显示。
【案例演示】
采购订单,单据体有一个二维码文本字段,将其值转成二维码图片并显示。
本案例演示了两种方式显示二维码图片:
<1>修改元数据的DataBound。
<2>通过控件编程模型更新属性SourceUrl。

【实现步骤】
<1>编写表单插件,代码如下。
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.ControlElement;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
using System.Text;
using ThoughtWorks.QRCode.Codec;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【表单插件】单据体文本字段转成二维码
/// </summary>
[Description("【表单插件】单据体文本字段转成二维码"), HotUpdate]
public class ConvertTextToQrCodeFormPlugIn : AbstractDynamicFormPlugIn
{
/// <summary>
/// 切换分录数据行时,自动生成二维码
/// </summary>
/// <param name="e"></param>
public override void EntityRowClick(EntityRowClickEventArgs e)
{
base.EntityRowClick(e);
if (!e.Key.EqualsIgnoreCase("FPOOrderEntry"))
{
return;
}
if (e.Row < 0)
{
return;
}
var text = (string)this.View.Model.GetValue("F_Jac_Text", e.Row);
var qrText = "[Customer]" + text;
SetQrCode("F_Jac_Barcode", qrText);
this.View.ShowMessage(string.Format("已将当前分录行的二维码文本{0}生成为二维码图片,可用手机扫描查验。", text));
}
public override void BarItemClick(BarItemClickEventArgs e)
{
base.BarItemClick(e);
if (e.BarItemKey.EqualsIgnoreCase("SetQrCode"))
{
var billNo = (string)this.View.Model.GetValue("FBillNo");
var qrCodeImageUrl = GetQrCode(billNo);
// 通过控件编程模型更新二维码
this.View.GetControl("F_Jac_Barcode").SetCustomPropertyValue("SourceUrl", qrCodeImageUrl);
this.View.ShowMessage(string.Format("已将单据编号{0}生成为二维码图片,可用手机扫描查验。", billNo));
}
}
/// <summary>
/// 通过修改元数据的方式更新二维码
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
private void SetQrCode(string key, string value)
{
var qrCode = (Barcod
二开案例.让单据体文本字段转成二维码--转载
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



