下面是今天实际例子,动态加载菜单的代码。非常好用哦

 下面有两种方式添加事件:

MenuItem mi = new Ext.Net.MenuItem(entity.FullName)
                {
                    IconCls = iconCls,
                    Menu =
                        {
                            new Ext.Net.Menu
                            {
                                Items = {
                                  new Ext.Net.MenuItem { IconCls="x-loading-indicator", Text="Loading...", CanActivate=false, HideOnClick=false }
                                },
                                TagString = entity.FullName,
                                Loader = new ComponentLoader
                                {
                                    Mode = LoadMode.Component,
                                    DirectMethod = "#{DirectMethods}.Items",//加载方法
                                    RemoveAll = true,
                                    Params = {//设置调用事件时给的参数
                                        new Ext.Net.Parameter("tag", "this.tag", ParameterMode.Raw),
                                        new Ext.Net.Parameter("id", entity.Id.ToString(), ParameterMode.Raw)
                                    }
                                }
                            }

                        }
                     //第一种方法,在初始时给listeners事件初始
                    // ,Listeners =
                    //{
                    //    Click = { Handler = "loadMenuExample('" + this.UserInfo.GetUserParameter(entity.NavigateUrl) + "','" + entity.Id + "','" + entity.FullName + "','" + iconCls + "');" }
                    //}
                };
                var childList = this.UserModuleList.Where(child => child.ParentId != null && child.ParentId.ToString().Equals(entity.Id.ToString())).OrderBy(child => child.SortCode);
                if (childList.Count() <= 0) //是否有子菜单,如果有不本级菜单不加载事件. 第二种方式:在创建完menuitem时再追加进去事件
                    mi.Listeners.Click.Handler = "loadMenuExample('" + this.UserInfo.GetUserParameter(entity.NavigateUrl) + "','" + entity.Id + "','" + entity.FullName + "','" + iconCls + "');" ;
                items.Add(mi);

 

 

调用的Items方法使用:

 

[DirectMethod]
        public new string Items(Dictionary<string, string> parameters)
        {

            //System.Threading.Thread.Sleep(1500); //emulate net delay
            string tag = parameters["tag"];
            string id = parameters["id"];

 

        }

作者: 王春天·
关于作者:
  大连天翼信息科技有限公司 技术总监。
  SNF快速开发平台 创始人。应用平台架构师、IT规划咨询专家、业务流程设计专家。
  专注于快速开发平台的开发、代码生成器。同时专注于微软平台项目架构、管理和企业解决方案,多年项目开发与管理经验,精通DotNet系列技术Vue、.NetCore、MVC、Webapi、C#、WinForm等,DB(SqlServer、Oracle等)技术,移动端开发。熟悉Java、VB及PB开发语言。在面向对象、面向服务以及数据库领域有一定的造诣。现从事项目实施、开发、架构等工作。并从事用友软件产品U8、U9、PLM 客开工作。
如有问题或建议,请多多赐教!
本文版权归作者·,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过邮箱或QQ 联系我,非常感谢。