ASP.NET-FineUI开发实践-17

简介: 我又不用FineUI开发,所以FineUI项目经验等于0,最近在忙别的,所以也没工夫研究。积累了论坛和群里的问题,写下来留个备份 1.在grid可编辑单元格中,如果需要在点击该单元格时,单元格中所有文字内容全部选中的功能如何实现 引用地址 http://fineui.

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

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

 

实现:
看注释应该能看懂,第一个是...第二个...第三个,反正就是参数...
 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         /// <summary>
 2         /// 触发上层方法 方法名称,参数,参数,参数
 3         /// </summary>
 4         /// <param name="funname">方法名称</param>
 5         /// <param name="eves">参数</param>
 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         /// <summary>
14         /// 触发上层方法 是否关闭窗体,方法名称,参数,参数,参数
15         /// </summary>
16         /// <param name="bhide">是否关闭窗体</param>
17         /// <param name="funname">方法名称</param>
18         /// <param name="eves">参数</param>
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 /// <summary>
 2     /// 自定义事件参数
 3     /// </summary>
 4     public class CustomEventArgs : EventArgs
 5     {
 6         private string _eventArgument;
 7         /*扩展参数*/
 8         private List<string> _evelist;//事件参数集合
 9         private string _funname;//触发方法名称
10         /// <summary>
11         /// 触发方法名称
12         /// </summary>    
13         public string funname
14         {
15             get { return _funname; }
16             set { _funname = value; }
17         }
18         /// <summary>
19         /// 事件参数集合
20         /// </summary>    
21         public List<string> evelist
22         {
23             get { return _evelist; }
24             set { _evelist = value; }
25         }
26         /// <summary>
27         /// 事件参数
28         /// </summary>
29         public string EventArgument
30         {
31             get { return _eventArgument; }
32             set { _eventArgument = value; }
33         }
34         /// <summary>
35         /// 构造函数
36         /// </summary>
37         /// <param name="eventArgument">事件参数</param>
38         public CustomEventArgs(string eventArgument)
39         {
40             _eventArgument = eventArgument;
41             /*扩展解析方法*/
42             _evelist = new List<string>();
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 ,例子在这里  http://fineui.com/demo_pro/#/dem ... rrentselection.aspx。感觉这个很有用,现在开原版多选行只能按住Ctrl键实现点击每一行的任意位置多选,而且很容易误操作。
extjs 是有这个参数的,就是给写到源码里了
Grid.cs 文件新增属性
 1    /// <summary>
 2         /// 启用保存多行选择
 3         /// </summary>
 4         [Category(CategoryName.OPTIONS)]
 5         [DefaultValue(true)]
 6         [Description("启用多行选择")]
 7         public bool KeepCurrentSelection
 8         {
 9             get
10             {
11                 object obj = FState["KeepCurrentSelection"];
12                 return obj == null ? false : (bool)obj;
13             }
14             set
15             {
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 最后一炮,大家跨年吉祥
 

 

 

目录
相关文章
|
4月前
|
存储 缓存
.NET 6中Startup.cs文件注入本地缓存策略与服务生命周期管理实践:AddTransient, AddScoped, AddSingleton。
记住,选择正确的服务生命周期并妥善管理它们是至关重要的,因为它们直接影响你的应用程序的性能和行为。就像一个成功的建筑工地,工具箱如果整理得当,工具选择和使用得当,工地的整体效率将会大大提高。
161 0
|
8月前
|
人工智能 芯片
D1net阅闻|OpenAI员工疯狂暗示,内部已成功开发ASI?被曝训出GPT-5但雪藏
D1net阅闻|OpenAI员工疯狂暗示,内部已成功开发ASI?被曝训出GPT-5但雪藏
|
6月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
199 0
|
10月前
|
Linux API C#
基于 .NET 开发的多功能流媒体管理控制平台
基于 .NET 开发的多功能流媒体管理控制平台
152 9
|
10月前
|
Web App开发 前端开发 调度
一款基于 .NET + Blazor 开发的智能访客管理系统
一款基于 .NET + Blazor 开发的智能访客管理系统
133 8
|
10月前
|
前端开发 JavaScript C#
基于.NET8+Vue3开发的权限管理&个人博客系统
基于.NET8+Vue3开发的权限管理&个人博客系统
132 7
|
10月前
|
网络协议 C#
基于.NET WinForm开发的一款硬件及协议通讯工具
基于.NET WinForm开发的一款硬件及协议通讯工具
105 7
|
10月前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
237 5
|
SQL Web App开发 JavaScript
使用VS Code开发asp.net core (下)
第一部分: https://www.cnblogs.com/cgzl/p/8450179.html 本文是基于Windows10的. Debugging javascript 打开wwwroot/js/site.
1731 0
|
前端开发 .NET 开发工具
使用VS Code开发asp.net core (上)
本文是基于Windows10的. 下载地址: https://code.visualstudio.com/ insider 版下载地址: https://code.visualstudio.com/insiders/ 这两个版本可以同时安装在系统中.
2917 0

热门文章

最新文章