ASP.NET-FineUI开发实践-16(一)

简介: 还是基础的东西,grid全选没有事件,给加个事件,除了需要会复制粘贴外还要点推荐那!   第一步:原理  事件被触发,方法被实现。 对于全选事件,被触发有两种方式可写,一个是通过原生extjs方式触发,extjs就没有全选的事件,正常思路就是选择的行等于全部的行就触发了,这个方法听起来就恶心,所以还是放弃了;简单点写就是第二种方法直接通过点击触发,点了全选就触发全选事件了。

还是基础的东西,grid全选没有事件,给加个事件,除了需要会复制粘贴外还要点推荐那!

 
第一步:原理
 事件被触发,方法被实现。
对于全选事件,被触发有两种方式可写,一个是通过原生extjs方式触发,extjs就没有全选的事件,正常思路就是选择的行等于全部的行就触发了,这个方法听起来就恶心,所以还是放弃了;简单点写就是第二种方法直接通过点击触发,点了全选就触发全选事件了。
所以这里还是写出来,无非就是获取元素F12
我们操作的就是这个div主意选中前和选中后的样式区别。
 这样事件就写好了
1 $('#Grid1').find('.x-column-header.x-column-header-checkbox').on('click', function () {});
方法,就是回发,这里我们要触发的是cs的事件写法,不是回发的PageManager,而是回发的自定义事件,核心在__doPostBack的参数,什么样的参数可以触发cs的事件而不是没有意义,这里我参照了已有的事件rowselect事件,这时就用到了高级程序员才能用到的方法——复制
第二步:实现
FineUI触发的事件就是基于的js回发,rowselect 是怎么触发的呢,右键查看源码得知
 
listeners 监听 select 选择 __doPostBack 两个参数,一个是Grid1 就是ID= Grid1 的控件 触发的,第二个有意思,主意是写死的RowSelect$ 再加上参数 index 就是第几行,原来是通过RowSelect$ 来通知后台触发的是行选择事件,那么我们定位Gird.cs,找到RowSelect$ 第3218行有一段
1             if (EnableRowSelectEvent)
2             {
3                 string validateScript = "var args='RowSelect$'+index;";
4                 validateScript += GetPostBackEventReference("#RowSelect#").Replace("'#RowSelect#'", "args");
5                 string rowSelectScript = JsHelper.GetFunction(validateScript, "model", "record", "index"); //String.Format("function(model,rowIndex){{{0}}}", validateScript);
6                 selectOB.Listeners.AddProperty("select", rowSelectScript, true);
7             }

不用解释也应该能看出来,上面触发select的js 代码就是这样输出的。再点查询,又找到一个

1             else if (eventArgument.StartsWith("RowSelect$"))
2             {
3                 string[] commandArgs = eventArgument.Split('$');
4                 if (commandArgs.Length == 2)
5                 {
6                     OnRowSelect(new GridRowSelectEventArgs(Convert.ToInt32(commandArgs[1])));
7                 }
8             }
OnRowSelect 说明找到了,是在这里截取的__doPostBack 传来的参数RowSelect$并且写成了事件就可以在cs里触发他的重写了。
需要分析么?不需要,直接复制粘贴
1             else if (eventArgument.StartsWith("RowAllSelect$"))
2             {
3                 string[] commandArgs = eventArgument.Split('$');
4                 if (commandArgs.Length == 2)
5                 {
6                     OnRowAllSelect(new GridRowAllSelectEventArgs(bool.Parse(commandArgs[1].ToString())));
7                 }
8             }
改成了RowAllSelect$ ,前台给我传这个就说明触发cs 的OnRowAllSelect 行全选事件,为啥
 OnRowAllSelect(new GridRowAllSelectEventArgs(bool.Parse(commandArgs[1].ToString())));这句会有波浪线?因为没有这个方法啊!接着复制OnRowSelect 改成 OnRowAllSelect 就可以了
 
找到OnRowSelect 复制
 
 1         #region OnRowAllSelect
 2         private static readonly object _rowAllSelectHandlerKey = new object();
 3         /// <summary>
 4         /// 头部全选事件(需要启用EnableRowAllSelect)
 5         /// </summary>
 6         [Category(CategoryName.ACTION)]
 7         [Description("头部全选事件(需要启用EnableRowAllSelect)")]
 8         public event EventHandler<GridRowAllSelectEventArgs> RowAllSelect
 9         {
10             add
11             {
12                 Events.AddHandler(_rowAllSelectHandlerKey, value);
13             }
14             remove
15             {
16                 Events.RemoveHandler(_rowAllSelectHandlerKey, value);
17             }
18         }
19         /// <summary>
20         /// 触发行选中事件
21         /// </summary>
22         /// <param name="e">事件参数</param>
23         protected virtual void OnRowAllSelect(GridRowAllSelectEventArgs e)
24         {
25             EventHandler<GridRowAllSelectEventArgs> handler = Events[_rowAllSelectHandlerKey] as EventHandler<GridRowAllSelectEventArgs>;
26             if (handler != null)
27             {
28                 handler(this, e);
29             }
30         }
31         #endregion

还有哪个有波浪?GridRowAllSelectEventArgs 没有接着建,新建cs文件,把GridRowSelectEventArgs复制过来,不要忘了写上署名

 1 #region Comment
 2 /*
 3  * Project:    FineUI
 4  * 
 5  * FileName:    GridRowAllSelectEventArgs.cs
 6  * CreatedOn:   2015-10-14
 7  * CreatedBy:   没想好 935732994@qq.com
 8  * 
 9  * 
10  * Description:
11  *      ->
12  *   
13  * History:
14  *      ->
15  * 
16  * 
17  * 
18  * 
19  */
20 #endregion
21 using System;
22 using System.Data;
23 using System.Reflection;
24 using System.ComponentModel;
25 using System.Web.UI;
26 namespace FineUI
27 {
28     /// <summary>
29     /// 表格行选中事件参数
30     /// </summary>
31     public class GridRowAllSelectEventArgs : EventArgs
32     {
33         private bool _boolall;
34         /// <summary>
35         /// 选中状态
36         /// </summary>
37         public bool boolall
38         {
39             get { return _boolall; }
40             set { _boolall = value; }
41         }
42         /// <summary>
43         /// 构造函数
44         /// </summary>
45         /// <param name="rowIndex">选中状态</param>
46         public GridRowAllSelectEventArgs(bool boolall)
47         {
48             _boolall = boolall;
49         }
50     }
51 }

 

这样就应该不报错了,下回再写把。
目录
相关文章
|
14天前
|
设计模式 开发框架 JavaScript
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
113 3
|
14天前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
14天前
|
开发框架 JavaScript 前端开发
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
|
2月前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
36 1
|
2月前
|
开发框架 NoSQL MongoDB
C#/.NET/.NET Core开发实战教程集合
C#/.NET/.NET Core开发实战教程集合
|
2月前
|
SQL 开发框架 .NET
ASP连接SQL数据库:从基础到实践
随着互联网技术的快速发展,数据库与应用程序之间的连接成为了软件开发中的一项关键技术。ASP(ActiveServerPages)是一种在服务器端执行的脚本环境,它能够生成动态的网页内容。而SQL数据库则是一种关系型数据库管理系统,广泛应用于各类网站和应用程序的数据存储和管理。本文将详细介绍如何使用A
61 3
|
2月前
|
C# Windows
一款基于.NET开发的简易高效的文件转换器
一款基于.NET开发的简易高效的文件转换器
|
2月前
|
开发框架 缓存 算法
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
|
2月前
|
开发框架 缓存 前端开发
WaterCloud:一套基于.NET 8.0 + LayUI的快速开发框架,完全开源免费!
WaterCloud:一套基于.NET 8.0 + LayUI的快速开发框架,完全开源免费!

相关实验场景

更多