二开案例.表单插件.创建列表视图执行列表操作

【应用场景】
在单据或动态表单上,通过插件创建列表视图,然后执行列表操作。
【案例演示】
采购订单,通过插件创建列表视图,然后执行列表操作。

【实现步骤】
<1>编写表单插件,代码如下。
using Kingdee.BOS;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Core.ListFilter;
using Kingdee.BOS.JSON;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using Kingdee.BOS.Web.Core;
using Kingdee.BOS.Web.DynamicForm;
using Kingdee.BOS.Web.List;
using System;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【表单插件】创建列表视图执行列表操作
/// </summary>
[Description("【表单插件】创建列表视图执行列表操作"), HotUpdate]
public class CreateListViewAndDoOperationBillFormPlugIn : AbstractDynamicFormPlugIn
{
public override void BarItemClick(BarItemClickEventArgs e)
{
base.BarItemClick(e);
if (e.BarItemKey.EqualsIgnoreCase("test"))
{
var formId = "PUR_PurchaseOrder";
var schemeId = "6374b23796fe68";// 通过SQL查询:SELECT * FROM T_BAS_FILTERSCHEME
// <1>创建列表视图
var listView = CreateListView(this.Context, formId, schemeId);
listView.GetEntryData("FLIST", 0, 1000, null);
// <2>设置列表选中行
/* 用于列表选中行的数据包,可通过http数据抓包获取其格式
[{
"FLIST": {
"fieldKey": "Selected",
"row": 3,
"selRows": "1,2,3",
"isClientNewRow": false,
"clientNewRows": ""
}
}]
*/
var row = 3;
var selectedRows = new[] { 1, 2, 3 };
var postDatas = new JSONArray();
var jsObj = new JSONObject();
postDatas.Add(jsObj);
var jsObj2 = new JSONObject();
jsObj.Put("FLIST", jsObj2);
jsObj2["fieldKey"] = "Selected";
jsObj2["row"] = 3;
jsObj2["selRows"] = string.Join(",", selectedRows);
jsObj2["isClientNewRow"] = false;
jsObj2["clientNewRows"] = "";
listView.LoadPostBackData(postDatas);
listView.EntityRowClick("FLIST", row);
listView.GetActions();
// <3>执行列表操作
listView.InvokeFormOperation("Submit");
this.View.ShowMessage("执行列表操作成功!");
}
}
/// <summary>
/// 创建单据视图
/// </summary>
/// <param name="ctx"></param>
/// <param name="formId"></param>
/// <param name="schemeId"></param>
/// <returns></returns>
private static ListView CreateListView(Context ctx, string formId, string schemeId = null)
{
// 元数据
var formMetaData = FormMetaDataCache.GetCachedFormMetaData(ctx, formId);
// ShowParameter
var showParam = new ListShowParameter();
showParam.FormId = formId;
showParam.PageId = Guid.NewGuid().ToString();
var paraObj = showParam.CreateWebParams();
// OpenParameter
var dynamicFormMetaDataService = new DynamicFormMetaDataService();
var sessionManager = new SessionManager();
dynamicFormMetaDataService.SetContext(sessionManager, ctx);
dynamicFormMetaDataService.FormMetaData = formMetaData;
dynamicFormMetaDataService.GetDynamicFormConfig(paraObj);
var openParam = sessionManager.Get<DynamicFormOpenParameter>(showParam.PageId, FormConst.OPEN_PARAM);
openParam.SetCustomParameter("SessionManager", sessionManager);
// 创建视图
var listView = new ListPrintWebService(schemeId, null, null);
// 初始化视图
var provider = GetListServiceProvider(openParam);
listView.Initialize(openParam, provider);
listView.LoadData();
return listView;
}
/// <summary>
/// 获取报表服务提供者
/// </summary>
/// <returns></returns>
private static IResourceServiceProvider GetListServiceProvider(DynamicFormOpenParameter param)
{
var provider = new FormServiceProvider();
provider.Add(typeof(IDynamicFormView), CreateListView(param));
provider.Add(typeof(DynamicFormViewPlugInProxy), new ListViewPlugInPr二开案例.表单插件.创建列表视图执行列表操作
【应用场景】在单据或动态表单上,通过插件创建列表视图,然后执行列表操作。【案例演示】采购订单,通过插件创建列表视图,然后执行列表操...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



