二开案例.表单插件.动态文本

【应用场景】
<1>表达式编辑器。例如:{字段1}={字段2}+{字段3}
<2>条件编辑器。例如:{字段1}=true
<3>内容编辑器。例如:您的采购订单{单据编号}已审核通过,请及时查看。
运行时,可通过对动态文本内容进行解析,把花括号里面的内容替换成真实数据后,即可得到运行时的真实文本。
该字段目前主要应用于工作流模块的流程设计中心里的审批动作设置里的审批任务的标题和内容。
【案例演示】
采购订单,新增动态文本字段,绑定动态文本可输入项,生成动态文本内容,通过插件读写字段的值。

【实现步骤】
<1>编写表单插件,代码如下。
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.ControlElement;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【表单插件】动态文本
/// </summary>
[Description("【表单插件】动态文本"), HotUpdate]
public class DynamicTextFieldFormPlugIn : AbstractDynamicFormPlugIn
{
/// <summary>
/// 字段标识
/// </summary>
const string FieldKey = "F_Jac_DynamicText";
public override void BarItemClick(BarItemClickEventArgs e)
{
base.BarItemClick(e);
var field = (TextField) this.View.BillBusinessInfo.GetField(FieldKey);
var fieldAppearance = (WorkflowDynamicTextAppearance) this.View.LayoutInfo.GetAppearance(FieldKey);
if (e.BarItemKey.EqualsIgnoreCase("test1"))
{
// 赋值
this.Model.SetValue(FieldKey, "abcdefg");
return;
}
if (e.BarItemKey.EqualsIgnoreCase("test2"))
{
// 取值
var value = this.Model.GetValue(FieldKey) as string;
string msg = string.Format("动态文本字段的值:{0}", value);
this.View.ShowMessage(msg);
return;
}
if (e.BarItemKey.EqualsIgnoreCase("test3"))
{
// 锁定
this.View.GetControl(FieldKey).Enabled = false;
return;
}
if (e.BarItemKey.EqualsIgnoreCase("test4"))
{
// 解锁
this.View.GetControl(FieldKey).Enabled = true;
return;
}
if (e.BarItemKey.EqualsIgnoreCase("test5"))
{
// 隐藏
this.View.GetControl(FieldKey).Visible = false;
return;
}
if (e.BarItemKey.EqualsIgnoreCase("test6"))
{
// 显示
this.View.GetControl(FieldKey).Visible = true;
return;
}
}
public override void AfterBindData(EventArgs e)
{
base.AfterBindData(e);
SetDynamicTextData();
}
/// <summary>
/// 设置动态文本数据源
/// </summary>
private void SetDynamicTextData()
{
// 动态文本数据源
var dataArray = new JSONArray();
var itemarray = new JSONArray();
// 第一个元素:变量类型,对应下拉列表第三列
// 第二个元素:变量编码,对应下拉列表第一列
// 第三个元素:变量名称,对应下拉列表第二列
// 第四个元素:变量ID,不可见
#region 系统变量
itemarray = new JSONArray();
itemarray.Add("系统变量");
itemarray.Add("CurrentDate");
itemarray.Add("当前日期");
itemarray.Add("CurrentDate");
dataArray.Add(itemarray);
itemarray = new JSONArray();
itemarray.Add("系统变量");
itemarray.Add("CurrentUser");
itemarray.Add("当前用户");
itemarray.Add("CurrentUser");
dataArray.Add(itemarray);
#endregion
#region 流程变量
itemarray = new JSONArray();
itemarray.Add("流程变量");
itemarray.Add("FormName");
itemarray.Add("入口单据名称");
itemarray.Add("FormName");
dataArray.Add(itemarray);
itemarray = new JSONArray();
itemarray.Add("流程变量");
itemarray.Add("TargetFormName");
二开案例.表单插件.动态文本
【应用场景】<1>表达式编辑器。例如:{字段1}={字段2}+{字段3}<2>条件编辑器。例如:{字段1}=true<3>内容编辑器。例如:您的采购订单{单据...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



