二开案例.操作.空操作挂服务插件
【应用场景】空操作挂服务插件完成业务功能。
【案例演示】采购订单,列表菜单,新增菜单【空操作】,点击事件绑定空操作,然后挂载服务插件。
【实现步骤】
<1>编写服务插件,代码如下。
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Util;
using System.ComponentModel;
using System.Linq;
namespace Jac.XkDemo.BOS.App.PlugIn
{
/// <summary>
/// 【服务插件】空操作演示
/// </summary>
[HotUpdate]
[Description("【服务插件】空操作演示")]
public class DoNothingOperationServicePlugIn : AbstractOperationServicePlugIn
{
/// <summary>
/// 执行操作事务前事件,通知插件对要处理的数据进行排序等预处理(事务外触发)
/// </summary>
/// <param name="e">e.SelectedRows 准备要处理的扩展实体 e.DataEntitys 处理后的实体</param>
/// <remarks>
/// 1. 此事件在操作校验之后、操作实现代码之前执行
/// 2. 此事件在操作事务之前,即此事件中的数据库处理,不受操作的事务保护
/// 3. 通常此事件,也可以用来进行数据校验
/// </remarks>
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
{
base.BeforeExecuteOperationTransaction(e);
// 访问数据库
var sql = "SELECT FNAME FROM T_SEC_USER WHERE FUSERID=" + Context.UserId;
var userName = DBUtils.ExecuteScalar<string>(Context, sql, "");
// 获取列表选中行信息
if (e.SelectedRows != null)
{
var billNo = string.Join(",", e.SelectedRows.Select(o => o.DataEntity["BillNo"]));
}
// TODO
}
/// <summary>
/// 执行操作事务后事件,通知插件对象执行其它事务无关的业务逻辑(事务外触发)
/// </summary>
/// <param name="e"></param>
/// <remarks>
/// 1. 此事件在操作执行后,操作的内部逻辑已经执行完毕;
/// 2. 此事件在操作事务提交之后;
/// 3. 此事件中的数据库处理,不受操作的事务保护
/// 4. 通常此事件,也可以做同步数据,但是此同步数据的成功与否,不需影响操作
/// </remarks>
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
{
base.AfterExecuteOperationTransaction(e);
// TODO
}
}
}
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>BOSIDE扩展采购订单,列表菜单,新增菜单【空操作】。
<4>菜单【空操作】的点击事件绑定空操作。
<5>给空操作注册服务插件,保存元数据,开发完毕。
现在可以登录业务站点,打开采购订单,检验一下插件效果啦。
【注意】列表上的空操作,必须有选中行,才会触发服务插件哦喔~~
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.操作.空操作挂服务插件
本文2024-09-23 04:21:27发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164785.html