二开案例.表单插件.动态创建菜单
【应用场景】
运行时,动态创建菜单。
【注意事项】
<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) { base.BarItemClick(e); if (e.BarItemKey.EqualsIgnoreCase(MenuItemKey)) { this.View.ShowMessage("动态创建的菜单被点击啦!"); } } } } /* 菜单元数据 <LayoutInfos> <LayoutInfo action="edit" oid="bc952920-057d-4790-9c27-1134091eb298"> <Appearances> <FormAppearance action="edit" oid="ecbac0e9-50b5-436c-9dce-241b5b7682b9" ElementType="100" ElementStyle="1"> <Menu> <BarDataManager> <BarItems> <BarButtonItem ElementType="2005" ElementStyle="1"> <ImageKey /> <Shortcut /> <Seq>1007</Seq> <Description>动态菜单测试</Description> <IsShowTitle>True</IsShowTitle> <Caption>动态菜单测试</Caption> <Id>c3e85ee35aeb490488e38bae531eeb62</Id> <Key>Jac_MenuItem</Key> </BarButtonItem> </BarItems> <BarItemLinks> <BarItemLink> <Id>85ae0846-0c02-430e-8525-b0092a8fdab6</Id> <BarItemKey>Jac_MenuItem</BarItemKey> </BarItemLink> </BarItemLinks> </BarDataManager> </Menu> </FormAppearance> </Appearances> </LayoutInfo> </LayoutInfos> */
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>BOSIDE扩展采购订单,注册表单插件,保存元数据,开发完毕。
【功能验证】
<1>登录业务站点,打开采购订单新增界面,主菜单上,会动态创建菜单项,点击菜单,效果如下图。
---------------------------------------------------------------------------------------------------------
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.表单插件.动态创建菜单
【应用场景】运行时,动态创建菜单。【注意事项】<1>此案例仅简单演示如何通过修改元数据的方式动态创建菜单,因为涉及到运行时修改元数据...
点击下载文档
本文2024-09-23 03:58:43发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-162318.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章