FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 1747|回复: 0
打印 上一主题 下一主题

请教如何将事件传递到某个类

[复制链接]
跳转到指定楼层
楼主
发表于 2014-3-8 21:54:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 szjazz 于 2014-3-8 21:59 编辑

现在有个疑惑,编了一个树菜单的类,但相应的菜单项点击的事件,在引用类的页面会有所不同,所以,想将点击的事件先在引用的页面写法,想作为类的属性传递到类,不知如何实现?
动态从数据库读取生成菜单:



树形菜单类的代码

  1.         public void LoadMenu(DataTable dt)
  2.         {
  3.             if (dt.Rows.Count == 0)
  4.                 return;

  5.             // 原理:根据父子字段建立父表与子表的相互关系
  6.             //显示每一个第一个父结点,再调用递归ResolveSubTree显示该父记录下的所有子记录
  7.             DataSet ds = new DataSet();
  8.             ds.Tables.Add(dt);
  9.             if (fNameId != fNamePId)
  10.                 //如果父子字段相同,则不存在父子表的关系
  11.                 ds.Relations.Add("TreeRelation", ds.Tables[0].Columns[fNameId], ds.Tables[0].Columns[fNamePId], false);
  12.             DbTypeOfColumn = dt.Columns[fNameId].DataType.Name;

  13.             DataRow[] drArray;
  14.             //如果数据源记录包含根结点(其值为空或等于0)
  15.             if (ContainParent)
  16.                 drArray = dt.Select("ParentId is null or ParentId=0");
  17.             else
  18.                 drArray = dt.Select();
  19.             //
  20.             if (CategoryMenu == null)
  21.                 NodeIdPreWord = "Sys";
  22.             else
  23.                 NodeIdPreWord = CategoryMenu.ID;
  24.             //通过反射获取属性Menus
  25.             PropertyInfo menuInfo = CategoryMenu.GetType().GetProperty("Menu");
  26.             FineUI.Menu menu = menuInfo.GetValue(CategoryMenu, null) as FineUI.Menu;
  27.             Temp temp=new Temp();//引入模板数据规范
  28.             foreach (DataRow row in drArray)
  29.             {

  30.                 FineUI.MenuButton mbtnMenu = new MenuButton();
  31.                 string nodeText = row[fNameText].ToString();
  32.                 string nodeId = row[_fNameId].ToString();
  33.                 mbtnMenu.ID = NodeIdPreWord + nodeId;
  34.                 mbtnMenu.Text = nodeText;
  35.                 mbtnMenu.EnablePostBack = true;
  36.                 //如果是针对表格的菜单按钮,还须判断是否有选择项
  37.                 if (grid != null)
  38.                 {
  39.                     if (Action != "addnew" || string.IsNullOrEmpty(Action))
  40.                         mbtnMenu.OnClientClick = grid.GetNoSelectionAlertInParentReference(Grid.noSelectionMessage);
  41.                 }
  42.                 mbtnMenu.Click += new EventHandler(temp.DataRuleTemp);//就在这儿,不知如何传递???
  43.                 menu.Items.Add(mbtnMenu);
  44.             
  45.                 if (fNameId != fNamePId)
  46.                     ResolveSubMenu(row, mbtnMenu);
  47.             }
  48.         }
  49.       
  50.         /// <summary>
  51.         /// 将树项绑定到菜单按钮
  52.         /// </summary>
  53.         /// <param name="btn"></param>
  54.         /// <param name="nodes"></param>
  55.         public void ResolveSubMenu(DataRow dataRow,ControlBase btn)
  56.         {
  57.             //FineUI.Menu menu = new Menu();
  58.             //// 通过反射获取属性Menus
  59.             //PropertyInfo info = btn.GetType().GetProperty("Menus");
  60.             //(info.GetValue(btn, null) as MenuCollection).Add(menu);
  61.             DataRow[] drArray = dataRow.GetChildRows("TreeRelation");

  62.             PropertyInfo menuInfo = btn.GetType().GetProperty("Menu");
  63.             FineUI.Menu menu = menuInfo.GetValue(btn, null) as FineUI.Menu;
  64.             Temp temp = new Temp();//引入模板数据规范
  65.             foreach (DataRow row in drArray)
  66.             {
  67.                 FineUI.MenuButton mbtnMenu = new MenuButton();
  68.                 string nodeText = row[fNameText].ToString();
  69.                 string nodeId = row[_fNameId].ToString();
  70.                 mbtnMenu.ID = NodeIdPreWord + nodeId;
  71.                 mbtnMenu.Text = nodeText;
  72.                 mbtnMenu.EnablePostBack = true;
  73.                 //如果是针对表格的菜单按钮,还须判断是否有选择项
  74.                 if (grid != null)
  75.                 {
  76.                     if (Action != "addnew" || string.IsNullOrEmpty(Action))
  77.                         mbtnMenu.OnClientClick = grid.GetNoSelectionAlertInParentReference(Grid.noSelectionMessage);
  78.                 }
  79.                 mbtnMenu.Click += new EventHandler(temp.DataRuleTemp);;//就在这儿,不知如何传递???
  80.                 menu.Items.Add(mbtnMenu);

  81.                 if (row.GetChildRows("TreeRelation").Length > 0)
  82.                 {
  83.                     ResolveSubMenu(row,mbtnMenu);
  84.                 }
  85.             }
  86.         }
复制代码






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-27 01:23 , Processed in 0.044234 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表