二开案例.表单插件.值更新事件

【应用场景】插件捕获界面上或者后台的字段的值的变化,根据值的变化进行相应的业务逻辑处理,例如携带当前字段的某些值到其它的字段上。
【案例演示】采购订单,编辑界面,捕获多种不同类型的字段的值更新事件。
【实现步骤】
<1>编写表单插件,代码如下。
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using Kingdee.BOS.Web.DynamicForm;
using System.ComponentModel;
using System.Linq;
using System.Text;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【表单插件】值更新事件
/// </summary>
[Description("【表单插件】值更新事件"), HotUpdate]
public class DataChangedEventFormPlugIn : AbstractDynamicFormPlugIn
{
private StringBuilder msgs = new StringBuilder();
private int counter = 0;
public override void DataChanged(DataChangedEventArgs e)
{
base.DataChanged(e);
if (e.Field.Key.EqualsIgnoreCase("F_Jac_Remarks") || ((DynamicWebFormView) this.View).TryGetControl("F_Jac_Remarks") == null)
{
return;
}
// 将值更新事件发生时的对应字段的新旧值输出到界面上
var msg = string.Format("{0}\r\n字段名:{1}\r\n字段标识:{2}\r\n旧值:{3}\r\n新值:{4}\r\n"
, counter++, e.Field.Name, e.Field.Key, GetValue(e.Field, e.OldValue), GetValue(e.Field, e.NewValue));
msgs.Insert(0, msg);
this.View.Model.SetValue("F_Jac_Remarks", msgs.ToString());
}
private string GetValue(Field field, object val)
{
if (val.IsNullOrEmpty())
{
return "";
}
if (field is ComboField)
{
return GetEnumName((ComboField)field, val);
}
if (val is string[])
{
var obj = (string[])val;
return string.Join(",", obj);
}
if (val is DynamicObject)
{
var obj = (Dyn
二开案例.表单插件.值更新事件
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



