博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET-FineUI开发实践-17
阅读量:6885 次
发布时间:2019-06-27

本文共 5859 字,大约阅读时间需要 19 分钟。

我又不用FineUI开发,所以FineUI项目经验等于0,最近在忙别的,所以也没工夫研究。积累了论坛和群里的问题,写下来留个备份

1.在grid可编辑单元格中,如果需要在点击该单元格时,单元格中所有文字内容全部选中的功能如何实现
引用地址 
解决办法,利用了grid编辑前事件,现在FineUI开源版写事件很方便,所以没啥新鲜的,添加事件
Event 就是事件名称,比如 click dbclick等,Handler就是调用的方法函数,这里就写函数名称即可,参数是自动传的
1        2             
3
4
5

 

实现:
看注释应该能看懂,第一个是...第二个...第三个,反正就是参数...
1             function Gbeforeedit(editor, e, eop) { 2                 //得到选择器控件 3                 var edcmp = e.column.getEditor(); 4                 //如果是个text 5                 if (edcmp.getXType() == "textfield") { 6                     //选中文字,注意延迟, 7                     window.setTimeout(function () { 8                         edcmp.selectText(); 9                     }, 100);10                 }11             }

2.封了一下上级回发的方法,以前写过,都是前台的,给封了一下下,改了源码

1         ///  2         /// 触发上层方法 方法名称,参数,参数,参数 3         ///  4         /// 方法名称 5         /// 参数 6         public void ParentsCustomEvent(string funname, params string[] eves) 7         { 8             string eve = funname + '|' + string.Join("$", eves); 9             //string js = "(function(){var aw=F.wnd.getActiveWindow();if(aw){aw.window.F.customEvent('" + eve + "');}})();";10             string js = "(function(){parent.F.customEvent('" + eve + "');})();";11             FineUI.PageContext.RegisterStartupScript(js);12         }13         /// 14         /// 触发上层方法 是否关闭窗体,方法名称,参数,参数,参数15         /// 16         /// 是否关闭窗体17         /// 方法名称18         /// 参数19         public void ParentsCustomEvent(bool bhide, string funname, params string[] eves)20         {21             string eve = funname + '|' + string.Join("$", eves);22             string hide = "";23             if (bhide)24             {25                 hide += "aw.f_hide();";26             }27             string js = "(function(){var aw=F.wnd.getActiveWindow();if(aw){aw.window.F.customEvent('" + eve + "');" + hide + "}})();";28             //string js = "(function(){parent.F.customEvent('" + eve + "');})();";29             FineUI.PageContext.RegisterStartupScript(js);30         }

这个方法就是把得到上级给得到然后回传方法,触发上级的PageManager1_CustomEvent事件第二个是个重载,给改了,实现的目的就是可以传自己想传的参数,比如下面这个方法

1         protected void btnSaveContinue_Click(object sender, EventArgs e)2         {3             // 1. 这里放置保存窗体中数据的逻辑4             //方法名称,参数5             ParentsCustomEvent("show", "就是这么封", "就是这么封1", "就是这么封2", "就是这么封3", "就是这么封4");6             // 2. 关闭本窗体,然后回发父窗体7             //PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());8         }

父页面就可以写成

1         protected void PageManager1_CustomEvent(object sender, CustomEventArgs e) 2         { 3             //方法名称 4             if (e.funname == "show") 5             { 6                 string s = ""; 7                 //循环参数集合 8                 foreach (string item in e.evelist) 9                 {10                     s += item + ";";11                 }12                 //事件参数13                 Alert.Show(s);14             }15         }

CustomEventArgs扩展了两个参数,就是定义了一个规则罢了 既然叫自定义事件参数那就自定义好了

1 ///  2     /// 自定义事件参数 3     ///  4     public class CustomEventArgs : EventArgs 5     { 6         private string _eventArgument; 7         /*扩展参数*/ 8         private List
_evelist;//事件参数集合 9 private string _funname;//触发方法名称10 ///
11 /// 触发方法名称12 /// 13 public string funname14 {15 get { return _funname; }16 set { _funname = value; }17 }18 ///
19 /// 事件参数集合20 /// 21 public List
evelist22 {23 get { return _evelist; }24 set { _evelist = value; }25 }26 ///
27 /// 事件参数28 /// 29 public string EventArgument30 {31 get { return _eventArgument; }32 set { _eventArgument = value; }33 }34 ///
35 /// 构造函数36 /// 37 ///
事件参数38 public CustomEventArgs(string eventArgument)39 {40 _eventArgument = eventArgument;41 /*扩展解析方法*/42 _evelist = new List
();43 if (eventArgument.IndexOf('|') > 0)44 {45 _funname = eventArgument.Split('|')[0];46 string[] s = eventArgument.Split('|')[1].Split('$');47 for (int i = 0; i < s.Length; i++)48 {49 _evelist.Add(s[i]);50 }51 }52 }53 }

 

没必要向我这么写,只是给了灵感吧
3.也是在论坛上看见的,我新想最起码攒三个在写博客,今天就看见了,查了查,封个方法就可以了
请问FineUI开源版中如何实现Grid保持行选中状态?就好像专业版中的 KeepCurrentSelection ,例子在这里
 。感觉这个很有用,现在开原版多选行只能按住Ctrl键实现点击每一行的任意位置多选,而且很容易误操作。
引用页面 
extjs 是有这个参数的,就是给写到源码里了
Grid.cs 文件新增属性
1    ///  2         /// 启用保存多行选择 3         ///  4         [Category(CategoryName.OPTIONS)] 5         [DefaultValue(true)] 6         [Description("启用多行选择")] 7         public bool KeepCurrentSelection 8         { 9             get10             {11                 object obj = FState["KeepCurrentSelection"];12                 return obj == null ? false : (bool)obj;13             }14             set15             {16                 FState["KeepCurrentSelection"] = value;17             }18         }

3534行改下

1                 if (EnableMultiSelect) 2                 { 3                     if (KeepCurrentSelection) 4                     { 5                         selectOB.AddProperty("mode", "SIMPLE"); 6                     } 7                     else 8                     { 9                         selectOB.AddProperty("mode", "MULTI");10                     }11                 }

就可以了,环境是4.2.2

 
源码啥的都考走吧,也不截图了,没啥可玩的,就是好久不写,凑个一章算是 2015 最后一炮,大家跨年吉祥
 

 

 

转载于:https://www.cnblogs.com/shiworkyue/p/5091341.html

你可能感兴趣的文章
SqlHelper:带sqlParameter,对sql server增、册、查、改的公用方法
查看>>
【Exchange 2019 設置技巧】用戶郵箱默認配額設定
查看>>
centos虚拟机实现上网
查看>>
我的友情链接
查看>>
处理HP-UNIX面板灯报警及配置MP
查看>>
Java多线程和线程池
查看>>
配置docker使用overlay2存储
查看>>
邮件服务器迁移方案让企业邮箱安心“搬家”
查看>>
Reflect
查看>>
Linux下的串口系列---struct termios结构体
查看>>
ubuntu 12.4 zeromq-2.2 binding language java
查看>>
CentOS6.2下搭建LVS(DR)+Keepalived实现高性能高可用负载均衡服务器
查看>>
Spring boot 连接多数据源
查看>>
我的友情链接
查看>>
使用FastDFS搭建图片服务器单实例篇
查看>>
Linux系统中掩耳盗铃的sudo配置
查看>>
C# yeild使用
查看>>
C语言编写cgi程序(下)
查看>>
我的友情链接
查看>>
在两台华为BAS(V5.30版本以上)间建立MPLS L2×××
查看>>