二开案例.表单插件.打开基础资料列表给文本字段赋值
【应用场景】打开基础资料列表给文本字段赋值
【案例演示】采购订单,新增文本字段,显示编辑按钮,点击编辑按钮时,打开供应商列表,双击列表数据行,即可给该文本字段赋值。
【实现步骤】
<1>编写表单插件,代码如下。
using Kingdee.BOS;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【表单插件】打开基础资料列表给文本字段赋值
/// </summary>
[Description("【表单插件】打开基础资料列表给文本字段赋值"), HotUpdate]
public class TextFieldSetValueByF8ListFormPlugIn : AbstractDynamicFormPlugIn
{
/// <summary>
/// 打开基础资料列表,把多语言数据复制给多语言字段(因为多语言字段无法显示编辑按钮,只好用一个普通按钮代替)
/// </summary>
/// <param name="e"></param>
public override void ButtonClick(ButtonClickEventArgs e)
{
base.ButtonClick(e);
// 打开基础资料列表
var listShowParameter = new ListShowParameter();
listShowParameter.PageId = Guid.NewGuid().ToString();
listShowParameter.FormId = "BD_Supplier";
listShowParameter.MultiSelect = false;
listShowParameter.IsLookUp = true;
this.View.ShowForm(listShowParameter, result =>
{
// 在回调函数中把基础资料列表选中的数据行对应的供应商的名称赋值给单据头上的供应商名称字段(多语言文本字段)
if (result == null)
{
return;
}
var returnData = result.ReturnData as ListSelectedRowCollection;
if (returnData == null || returnData.Count == 0)
{
return;
}
var rowData = returnData[0];
// 方式1:只要当前语言的名称
//this.Model.SetValue("F_Jac_MulLangText", new LocaleValue(rowData.Name));
// 方式2:要所有语言的名称
var supplierBusinessInfo = FormMetaDataCache.GetCachedFormMetaData(Context, "BD_Supplier").BusinessInfo;
var subDynamicObjectType = supplierBusinessInfo.GetSubBusinessInfo(new List<string>(new[] { "FName" })).GetDynamicObjectType();
var ojb = BusinessDataServiceHelper.LoadSingle(Context, rowData.PrimaryKeyValue, subDynamicObjectType);
this.Model.SetValue("F_Jac_MulLangText", ojb["Name"]);
});
}
/// <summary>
/// 打开基础资料列表,把文本数据复制给文本字段
/// </summary>
/// <param name="e"></param>
public override void BeforeF7Select(BeforeF7SelectEventArgs e)
{
base.BeforeF7Select(e);
if (e.FieldKey.Equals("F_Jac_Text", StringComparison.OrdinalIgnoreCase))
{
// 打开基础资料列表
var listShowParameter = (ListShowParameter)e.DynamicFormShowParameter;
listShowParameter.PageId = Guid.NewGuid().ToString();
listShowParameter.FormId = "BD_Supplier";
listShowParameter.MultiSelect = false;
listShowParameter.IsLookUp = true;
this.View.ShowForm(listShowParameter, result =>
{
// 在回调函数中把基础资料列表选中的数据行对应的供应商的编码赋值给单据头上的供应商编码字段
if (result == null)
{
return;
}
var returnData = result.ReturnData as ListSelectedRowCollection;
if (returnData == null || returnData.Count == 0)
{
return;
}
var rowData = returnData[0];
this.Model.SetValue("F_Jac_Text", rowData.Number);
});
}
}
}
}
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>BOSIDE扩展采购订单,新增文本字段和多语言文本字段,分别用于保存供应商的编码和名称,新增一个按钮用于打开供应商F8列表,注册表单插件,保存元数据,开发完毕。
现在可以登录业务站点,打开采购订单新增界面,检验下插件的设置效果啦。
将列表选中的供应商的编码赋值给文本字段:
将列表选中的供应商的名称赋值给多语言文本字段:
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.表单插件.打开基础资料列表给文本字段赋值
本文2024-09-23 04:20:12发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164652.html