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

 

 

目录
相关文章
|
15天前
|
存储 开发工具 Android开发
使用.NET MAUI开发第一个安卓APP
【9月更文挑战第24天】使用.NET MAUI开发首个安卓APP需完成以下步骤:首先,安装Visual Studio 2022并勾选“.NET Multi-platform App UI development”工作负载;接着,安装Android SDK。然后,创建新项目时选择“.NET Multi-platform App (MAUI)”模板,并仅针对Android平台进行配置。了解项目结构,包括`.csproj`配置文件、`Properties`配置文件夹、平台特定代码及共享代码等。
|
17天前
|
开发框架 .NET C#
VSCode开发.net项目时调试无效
【9月更文挑战第22天】在使用 VSCode 开发 .NET 项目时遇到调试问题,可从项目配置、调试配置、调试器安装、运行环境、日志和错误信息等方面排查。确认项目类型及文件配置,检查 `launch.json` 文件及配置项,确保调试器扩展已安装并启用,验证 .NET 运行时版本和环境变量,查看 VSCode 输出窗口和项目日志文件,检查权限及代码错误。若问题仍未解决,可查阅官方文档或社区论坛。
|
22天前
|
人工智能 前端开发 开发工具
解读.NET 技术的开发潜力
本文全面介绍了.NET技术在软件开发领域的核心优势、创新应用及面临的挑战。.NET以其统一的开发平台、强大的工具和跨平台能力,成为企业级应用、Web应用乃至游戏开发的理想选择。然而,在性能优化、容器化及AI集成等方面仍需不断突破。通过积极拥抱开源和社区驱动模式,.NET将持续推动软件开发的进步。
40 1
|
1月前
|
存储 运维
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
|
1月前
|
SQL 关系型数据库 数据库
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
|
1月前
|
消息中间件 开发框架 前端开发
YuebonCore:基于.NET8开源、免费的权限管理及快速开发框架
YuebonCore:基于.NET8开源、免费的权限管理及快速开发框架
|
1月前
|
开发框架 JavaScript 前端开发
|
前端开发 API 数据库
ASP.NET-FineUI开发实践-9(三)
1. TextChanged事件前台触发回发后台,接上文,先给TextBox1加上事件,看看是怎么生成出来的, 注意AutoPostBack="true",找源代码,f4多出了个 listeners: { change: function () { ...
838 0
|
前端开发 JavaScript
ASP.NET-FineUI开发实践-8(二)
把上回的做一些改进 1.点击grid2的行改变TriggerBox1的值 var v = $(item).find('.x-grid-cell-Name div.
799 0
|
JavaScript API 前端开发
ASP.NET-FineUI开发实践-9
用了FineUI有一段时间了,还是分享下我咋改的吧,没想的那么难,我也是从小白来的。 基础是要懂JQ和EXTJS,主要是要懂JQ和EXTJS能干啥,这里有两个网站 http://www.w3school.
935 0

相关实验场景

更多