单据表单插件BarItemClick菜单点击说明【分享】
金蝶云社区-云社区用户4u731234
云社区用户4u731234
8人赞赏了该文章 6194次浏览 未经作者许可,禁止转载编辑于2017年02月16日 11:09:41

本说明是想说下界面模型上菜单点击相关的事件
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 执行菜单关联的操作后。