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

 
第一步:原理
 事件被触发,方法被实现。
对于全选事件,被触发有两种方式可写,一个是通过原生extjs方式触发,extjs就没有全选的事件,正常思路就是选择的行等于全部的行就触发了,这个方法听起来就恶心,所以还是放弃了;简单点写就是第二种方法直接通过点击触发,点了全选就触发全选事件了。
所以这里还是写出来,无非就是获取元素F12
我们操作的就是这个div主意选中前和选中后的样式区别。
 这样事件就写好了
 $('#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行有一段
             if (EnableRowSelectEvent)
{
string validateScript = "var args='RowSelect$'+index;";
validateScript += GetPostBackEventReference("#RowSelect#").Replace("'#RowSelect#'", "args");
string rowSelectScript = JsHelper.GetFunction(validateScript, "model", "record", "index"); //String.Format("function(model,rowIndex){{{0}}}", validateScript);
selectOB.Listeners.AddProperty("select", rowSelectScript, true);
}

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

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

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

 #region Comment
/*
* Project: FineUI
*
* FileName: GridRowAllSelectEventArgs.cs
* CreatedOn: 2015-10-14
* CreatedBy: 没想好 935732994@qq.com
*
*
* Description:
* ->
*
* History:
* ->
*
*
*
*
*/
#endregion
using System;
using System.Data;
using System.Reflection;
using System.ComponentModel;
using System.Web.UI;
namespace FineUI
{
/// <summary>
/// 表格行选中事件参数
/// </summary>
public class GridRowAllSelectEventArgs : EventArgs
{
private bool _boolall;
/// <summary>
/// 选中状态
/// </summary>
public bool boolall
{
get { return _boolall; }
set { _boolall = value; }
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="rowIndex">选中状态</param>
public GridRowAllSelectEventArgs(bool boolall)
{
_boolall = boolall;
}
}
}
这样就应该不报错了,下回再写把。

ASP.NET-FineUI开发实践-16(一)的更多相关文章

  1. FineUI开源版(ASP.Net)开发实践-目录

    点我订阅 目前所有博客的截图,方便离线观看,点图片 FineUI初学手册 下载,实例项目搭建 FineUI初学手册-部分JS整理 部分JS整理 ASP.NET-FineUI开发实践-1 实际开发环境是 ...

  2. FineUI开发实践-目录

    点我订阅 目前所有博客的截图,方便离线观看,点图片 FineUI初学手册 下载,实例项目搭建 FineUI初学手册-部分JS整理 部分JS整理 ASP.NET-FineUI开发实践-1 实际开发环境是 ...

  3. FineUI开发实践

    ASP.NET-FineUI开发实践-7 摘要: 下拉显示grid列表.其实很简单,但是试了很多方法,水平有限,主要是都不好使,还是简单的好使了,分享下.先是看了看网上的,是直接写个了extjs控件类 ...

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

    实现那还差点,在事件参数里我传了一个boolall选中状态参数,这个参数由前台给的,RowSelect 传的是index 行号,就是改这,通过$符号来分开的, if (commandArgs.Leng ...

  5. ASP.NET MVC5 网站开发实践(二) Member区域 - 咨询管理的架构

    咨询.留言.投诉等功能是网站应具备的基本功能,可以加强管理员与用户的交流,在上次完成文章部分后,这次开始做Member区域的咨询功能(留言.投诉都是咨询).咨询跟文章非常相似,而且内容更少.更简单. ...

  6. ASP.NET MVC5 网站开发实践(二) Member区域 - 用户部分(2)用户登录、注销

    上次实现了用户注册,这次来实现用户登录,用到IAuthenticationManager的SignOut.SignIn方法和基于声明的标识.最后修改用户注册代码实现注册成功后直接登录. 目录: ASP ...

  7. ASP.NET MVC5 网站开发实践(二) Member区域 - 用户部分(1)用户注册

    上一次把基本框架搭建起来了,这次开始整Web部分,终于可以看到界面了小激动一下.web项目部分从用户功能开始,基本有注册,登录.注销.查找.查看.删除等涉及Member区域和Manage区域. 目录: ...

  8. ASP.NET-FineUI开发实践-9(四)

    现在是这么个问题,在开发中表格是动态出来的,就是标准板是全部字段列出,客户要根据情况列出自己想要的,在增加操作页面的同时要是能用前台自带的功能直接保存到后台就好了,现在的列显示和隐藏是不回发的. 1. ...

  9. ASP.NET MVC5 网站开发实践(二) Member区域–管理列表、回复及删除

    本来想接着上次把这篇写完的,没想到后来工作的一些事落下了,放假了赶紧补上. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NET MVC5 网站开发实践(一) - 项目框架 ASP ...

随机推荐

  1. windows下端口被占用的解决方法

    1:打开CMD输入:netstat -ano | findstr "80" 找到PID: 2:查看应用名称:tasklist | findstr "2544" ...

  2. Servo: The Embeddable Browser Engine

    Embedding, in the context of this article, is the process of hosting a web rendering engine inside a ...

  3. System.in.read()

     用读取键盘输入必须构建       1.输入流   System.in;       2.字符输入流   InputStreamReader       3.缓存输入流   BufferedRead ...

  4. 重构第三天:提升方法&下移方法

    如果两个子类拥有相同的方法,把它们移动到超类中来 Warning! 但是从子类到父类移动方法的时候要注意, 不要过度采用这种方法,否则会出现继承滥用的情况.如果一个父类A有多个方法,假设m1, m2方 ...

  5. NOIP2014酱油记

    尘埃落定,来补一下酱油记吧... day-1 晚上老师说有xyz的noip模拟赛,于是果断请假来做(shou)题(nve),题目真是理(S)性(X)愉(B)悦(K),然后就爆零了!感觉noip要爆零滚 ...

  6. 挖坑#3-----DP优化+CDQ分治+期望DP

    1492: [NOI2007]货币兑换Cash 1176: [Balkan2007]Mokia 1452: [JSOI2009]Count 1563: [NOI2009]诗人小G tyvj1309   ...

  7. Oracle imp 不同字符集导入

    有一个dmp文件是US7ASCII字符的,现有数据库是UTF8字符集,按照查到的资料看说是UTF8是US7ASCII超级可以自动转换导入.但是导入的时候某些字段超长,导致一个表导入错误. 解决办法,讲 ...

  8. android获取设备屏幕大小的方法

    // 通过WindowManager获取 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay( ...

  9. 配置Myeclipse中的项目部署到服务器,报the selected server is enabled, but is not configured properly.

    the selected server is enabled, but is not configured properly. deployment to it will not be permitt ...

  10. C语言实现两栈空间共享

    一个同学让我改一段两栈共享的C语言代码,实现进栈.出栈.输出栈里元素的功能. 代码如下: #include <stdio.h> #include <stdlib.h> #def ...