二开案例.表单插件.动态创建菜单

【应用场景】
运行时,动态创建菜单。
【注意事项】
<1>此案例仅简单演示如何通过修改元数据的方式动态创建菜单,因为涉及到运行时修改元数据,具有一定的风险性(元数据缓存问题),非必要不推荐。
<2>界面有本地缓存,需清空本地缓存后,动态创建的元素才会显示。
【案例演示】
采购订单,新增界面,运行时动态创建菜单项。

【实现步骤】
<1>编写表单插件,代码如下。
using Kingdee.BOS;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.BarElement;
using Kingdee.BOS.Util;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【表单插件】动态创建菜单
/// </summary>
[Description("【表单插件】动态创建菜单"), HotUpdate]
public class CreateMenuItemFormPlugIn : AbstractDynamicFormPlugIn
{
/// <summary>
/// 菜单标识
/// </summary>
const string MenuItemKey = "Jac_MenuItem";
public override void OnSetLayoutInfo(SetLayoutInfoArgs e)
{
base.OnSetLayoutInfo(e);
var layoutInfo = this.View.LayoutInfo;
var menu = layoutInfo.GetFormAppearance().Menu;
// BarButtonItem
var button = new BarButtonItem();
button.Key = MenuItemKey;
if (menu.GetBarItem(button.Key) == null)
{
menu.AddBarItem(button);
button.Seq = 1007;
button.IsShowTitle = true;
button.Description = new LocaleValue("动态菜单测试", this.Context.UserLocale.LCID);
button.Caption = new LocaleValue("动态菜单测试", this.Context.UserLocale.LCID);
button.Id = "c3e85ee35aeb490488e38bae531eeb62";
// BarItemLink
var barItemLink = new BarItemLink();
barItemLink.Id = "85ae0846-0c02-430e-8525-b0092a8fdab6";
barItemLink.BarItemKey = button.Key;
menu.AddBarItemLink(barItemLink);
e.BillLayoutInfo = e.LayoutInfo = layoutInfo;
}
}
public override void BarItemClick(BarItemClickEventArgs e)
{
二开案例.表单插件.动态创建菜单
【应用场景】运行时,动态创建菜单。【注意事项】<1>此案例仅简单演示如何通过修改元数据的方式动态创建菜单,因为涉及到运行时修改元数据...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



