单据表单插件BarItemClick菜单点击说明【分享】
金蝶云社区-云社区用户4u731234
云社区用户4u731234
9人赞赏了该文章 6,987次浏览 未经作者许可,禁止转载编辑于2017年02月16日 11:09:41
summary-icon摘要由AI智能服务提供

本文介绍了一个关于界面模型上菜单点击相关事件的自定义插件实现,包括BarItemClick、AfterBarItemClick、BeforeDoOperation、AfterDoOperation等事件的覆写与处理逻辑。文中展示了如何通过事件控制权限验证、操作执行以及参数设置,并结合代码详细说明了如何在使用场景中进行实现,特别是单据头和单据体菜单点击及其处理流程的自定义扩展。

本说明是想说下界面模型上菜单点击相关的事件
BarItemClick、AfterBarItemClick、BeforeDoOperation、AfterDoOperation

先说明几点 菜单、表单服务、操作、权限项

菜单的点击事件可以 关联表单服务及操作,
操作可以关联权限项,
当用户角色授予了相关权限对象的权限项,就可以执行相关操作了。

直接上代码,
[code]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

namespace Customer.Business.PlugIn
{

[Description("单据、基础资料-表单插件")]
public class CustomerBillPlugIn : AbstractBillPlugIn
{
///


/// 单据头菜单点击
///

///
public override void BarItemClick(BarItemClickEventArgs e)
{
//base.BarItemClick(e);
if (e.BarItemKey == "单据头菜单标识")
{
//this.View.ShowMessage("Hello World");//如点击一个菜单,弹出Hello World
this.Model.SetValue("单据头字段", "设置值");
this.Model.SetValue("字段标识", "设置值", 0);//这里的字段标识 可以是单据体的字段,也可以单据头的字段,第三个参数为行索引,如果是单据头的字段可以填0或不填,单据体的设置相应的行索引即可
}
}

///


/// 单据体菜单点击
///

///
public override void EntryBarItemClick(BarItemClickEventArgs e)
{
base.EntryBarItemClick(e);
}

///


/// 单据头菜单处理后如在BarItemClick 设置参数e.Cancel = true 不会走到这里, 相对于 BarItemClick会多执行菜单关联的表单服务
///

///
public override void AfterBarItemClick(AfterBarItemClickEventArgs e)
{
base.AfterBarItemClick(e);
}

///


/// 对应的单据体菜单点击
///

///
public override void AfterEntryBarItemClick(AfterBarItemClickEventArgs e)
{
base.AfterEntryBarItemClick(e);
}

///


/// 菜单不仅可以关联表单服务,还可以关联操作,操作执行前
///

///
public override void BeforeDoOperation(BeforeDoOperationEventArgs e)
{
base.BeforeDoOperation(e);
}

///


/// 如果需要受到操作权限项影响就需要写到这里,只有当菜单关联的操作执行成功,才会走到这里
///

///
public override void AfterDoOperation(AfterDoOperationEventArgs e)
{
base.AfterDoOperation(e);
}

//如果需要相关赋值 需要以事务方式的执行,需要写服务插件

}

}
[/code]

最后上张图继续说明下,


BarItemClick 是菜单最开始点击进入的事件,
AfterBarItemClick 已经执行了菜单关联的表单服务,
BeforeDoOperation 验证了权限,执行菜单关联的操作前
AfterDoOperation 执行菜单关联的操作后。