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 最后一炮,大家跨年吉祥
 

 

 

目录
相关文章
|
2天前
|
开发框架 JSON .NET
.Net4.0 Web.config 配置实践
.Net4.0 Web.config 配置实践
|
9天前
|
人工智能 量子技术 C#
【专栏】.NET 开发:开启数字化新时代
【4月更文挑战第29天】.NET开发在数字化新时代中发挥关键作用,借助跨平台能力、高性能和现代编程语言支持,如C#,助力企业实现数字化转型。通过企业级应用开发、移动应用和云计算集成,.NET加速业务流程和提升用户体验。未来,.NET将涉足AI、ML、MR/AR及量子计算,持续推动技术创新和数字化转型。开发者应提升技能,适应高性能需求,把握发展机遇。
|
9天前
|
缓存 监控 算法
【专栏】.NET 开发:实现卓越性能的途径
【4月更文挑战第29天】本文探讨了.NET开发中的性能优化,强调了理解性能问题根源和使用分析工具的重要性。基础优化包括代码优化(如减少计算、避免内存泄漏)、资源管理及选择合适算法。高级策略涉及并行编程、缓存策略、预编译(AOT)和微服务架构。持续性能测试与监控是关键,包括性能测试、监控分析和建立优化反馈循环。开发者应持续学习和实践性能优化,以构建高性能应用。
|
9天前
|
开发框架 .NET C#
【专栏】理解.NET 技术,提升开发水平
【4月更文挑战第29天】本文介绍了.NET技术的核心概念和应用,包括其跨平台能力、性能优化、现代编程语言支持及Web开发等特性。文章强调了深入学习.NET技术、关注社区动态、实践经验及学习现代编程理念对提升开发水平的重要性。通过这些,开发者能更好地利用.NET构建高效、可维护的多平台应用。
|
9天前
|
机器学习/深度学习 vr&ar 开发者
【专栏】.NET 技术:引领开发新方向
【4月更文挑战第29天】本文探讨了.NET技术如何引领软件开发新方向,主要体现在三方面:1) 作为跨平台开发的先锋,.NET Core支持多操作系统和移动设备,借助.NET MAUI创建统一UI,适应物联网需求;2) 提升性能和开发者生产力,采用先进技术和优化策略,同时更新C#语言特性,提高代码效率和可维护性;3) 支持现代化应用架构,包括微服务、容器化,集成Kubernetes和ASP.NET Core,保障安全性。此外,.NET还不断探索AI、ML和AR/VR技术,为软件开发带来更多创新可能。
|
9天前
|
物联网 vr&ar 开发者
【专栏】.NET 技术:为开发注入活力
【4月更文挑战第29天】本文探讨了.NET技术的创新,主要体现在三个方面:1) .NET Core实现跨平台开发革命,支持多种操作系统和硬件,如.NET MAUI用于多平台UI;2) 性能提升与生产力飞跃,C#新特性简化编程,JIT和AOT优化提升性能,Roslyn提供代码分析工具;3) 引领现代化应用架构,支持微服务、容器化,内置安全机制。未来,.NET 7将带来更多新特性和前沿技术整合,如量子计算、AI,持续推动软件开发创新。开发者掌握.NET技术将赢得竞争优势。
|
9天前
|
人工智能 前端开发 Cloud Native
【专栏】洞察.NET 技术的开发趋势
【4月更文挑战第29天】本文探讨了.NET技术的三大发展趋势:1) 跨平台与云原生技术融合,通过.NET Core支持轻量级、高性能应用,适应云计算和微服务;2) 人工智能与机器学习的集成,如ML.NET框架,使开发者能用C#构建AI模型;3) 引入现代化前端开发技术,如Blazor,实现前后端一致性。随着.NET 8等新版本的发布,期待更多创新技术如量子计算、AR/VR的融合,.NET将持续推动软件开发的创新与进步。
|
9天前
|
开发框架 物联网 测试技术
【专栏】.NET 开发:打造领先应用的基石
【4月更文挑战第29天】本文探讨了.NET开发框架为何成为构建领先应用的首选。高性能与稳定性是.NET的核心优势,它采用先进的技术和优化策略,如.NET Core的轻量级设计和JIT/AOT编译模式。跨平台兼容性让开发者能用相同代码库在不同操作系统上构建应用。现代化的开发体验,如C#语言的创新特性和Visual Studio的强大工具,提升了开发者生产力。丰富的生态系统和广泛支持,包括庞大的开发者社区和微软的持续投入,为.NET提供了坚实后盾。
|
9天前
|
人工智能 前端开发 Devops
【专栏】洞察.NET 技术在现代开发中的作用
【4月更文挑战第29天】本文探讨了.NET技术在现代软件开发中的核心价值、应用及挑战。.NET提供语言统一性与多样性,强大的Visual Studio工具,丰富的类库,跨平台能力及活跃的开发者社区。实际应用包括企业级应用、Web、移动、云服务和游戏开发。未来面临性能优化、容器化、AI集成等挑战,需持续创新。开发者应深入理解.NET,把握技术趋势,参与社区,共创美好未来。
|
9天前
|
机器学习/深度学习 人工智能 开发者
【专栏】.NET 技术:为开发带来新机遇
【4月更文挑战第29天】本文探讨了.NET技术如何为软件开发带来新机遇,分为三个部分:首先,.NET的跨平台革命,包括.NET Core的兴起、Xamarin与.NET MAUI的移动应用开发、开源社区的推动及性能优化;其次,介绍了云服务与微服务架构的集成,如Azure云服务、微服务支持、DevOps与CI/CD,以及Docker容器化;最后,讨论了AI与机器学习集成,如ML.NET、认知服务、TensorFlow和ONNX,使开发者能构建智能应用。面对这些机遇,开发者应不断学习和适应新技术,以创造更多价值。

相关实验场景

更多