还是基础的东西,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. spoj 4487. Can you answer these queries VI (gss6) splay 常数优化

    4487. Can you answer these queries VI Problem code: GSS6 Given a sequence A of N (N <= 100000) in ...

  2. HDUOJ Clear All of Them I 状压DP

    Clear All of Them I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 122768/62768 K (Java/Oth ...

  3. (转)Mono for Android 优势与劣势

    最近有兴趣了解一下Mono for Andriod,也就是使用.NET平台来开发Andriod程序.Mono for Android API 几乎映射标准的Andriod API.例如,两边API几乎 ...

  4. Android 每天定时提醒功能实现

    android要实现定时的功能那肯定就要用到闹铃相关的技术, 那么android闹铃实现是基于 AlarmManager 这个类的,首先我们来看一下它的几个主要的方法. 打开AlarmManager的 ...

  5. 在.net MVC中异步上传图片或者文件

      @using (Ajax.BeginForm("AddMessages", "MenuInfo", new AjaxOptions { HttpMethod ...

  6. DB2_001_MQT

    MQT stands for Materialed Query Table.它的定义是建立在查询结果之上的,把动态查询的结果放到表中,表中的数据随着基础表中数据的变化而变化.当基础表中的数据变化时,M ...

  7. poj 3710 Christmas Game(树上的删边游戏)

    Christmas Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1967   Accepted: 613 Des ...

  8. codeforce 230D Dijsktra

    #include <cstdio> #include <cstring> #include <iostream> #include <cmath> #i ...

  9. poj 1659 Frogs' Neighborhood (贪心 + 判断度数序列是否可图)

    Frogs' Neighborhood Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 6076   Accepted: 26 ...

  10. 【Lucene3.6.2入门系列】第15节_SolrJ高亮

    package com.jadyer.solrj; import java.util.ArrayList; import java.util.List; import java.util.Map; i ...