GridView,DataTable和List排序,SQL分页 支持CheckBox选择

重新封装了一个 gridview,支持如下功能:

1. checkbox选择记录,指定checkbox的位置
2. 支持list,dataset,datatable 排序
3. 排序时在header部分出现图标
4. 封装了pageindexchanged 和databind,不用每页都写。
5. 支持sql分页和aps教程netpager等分页控件。

注: 没有加入很多的功能,因为本身需要的就是一个轻量级的gridview,产生近可能少的代码。

另:选择高亮功能是用jquery实现的,因此使用时需要jquery的运行库。

代码1 : 辅助对象,实现sort排序。(其实这部分功能可以用linq来做,会简单很多,当这个类已经用了很久了,懒得改了)


1 using system;
2  using system.collections;
3  using system.collections.generic;
4 using system.reflection;
5
6 namespace xxware.xxcontrols
7 {
8 public class reverser<t> : icomparer<t>
9 {
10 private type _type = null;
11 private reverserinfo info;
12
13 /// <summary>
14 /// 构造函数
15 /// </summary>
16 /// <param name="type">进行比较的类类型</param>
17 /// <param name="name">进行比较对象的属性名称</param>
18 /// <param name="direction">比较方向(升序/降序)</param>
19 public reverser(type _type, string _name, string _direction)
20 {
21 this._type = _type;
22 this.info.name = _name;
23 this.info.direction = _direction.tolower();
24 }
25
26 /// <summary>
27 /// 构造函数
28 /// </summary>
29 /// <param name="classname">进行比较的类名称</param>
30 /// <param name="name">进行比较对象的属性名称</param>
31 /// <param name="direction">比较方向(升序/降序)</param>
32 public reverser(string _classname, string _name, string _direction)
33 {
34 try
35 {
36 this._type = type.gettype(_classname, true);
37 this.info.name = _name;
38 this.info.direction = _direction.tolower();
39 }
40 catch (exception e)
41 {
42 throw new exception(e.message);
43 }
44
45 }
46
47 /// <summary>
48 /// 构造函数
49 /// </summary>
50 /// <param name="t">进行比较的类型的实例</param>
51 /// <param name="name">进行比较对象的属性名称</param>
52 /// <param name="direction">比较方向(升序/降序)</param>
53 public reverser(t _t, string _name, string _direction)
54 {
55 this._type = _t.gettype();
56 this.info.name = _name;
57 this.info.direction = _direction;
58 }
59
60 int icomparer<t>.compare(t t1, t t2)
61 {
62 object x = this._type.invokemember(this.info.name, bindingflags.public | bindingflags.instance | bindingflags.getproperty, null, t1, null);
63 object y = this._type.invokemember(this.info.name, bindingflags.public | bindingflags.instance | bindingflags.getproperty, null, t2, null);
64
65 if (this.info.direction != "asc")
66 swap(ref x, ref y);
67 return (new caseinsensitivecomparer()).compare(x, y);
68 }
69
70 void swap(ref object x, ref object y)
71 {
72 object tmp = x;
73 x = y;
74 y = tmp;
75 }
76 }
77 public struct reverserinfo
78 {
79 public enum target
80 {
81 customer = 0,
82 from,
83 field,
84 server
85 }
86
87 public string name;
88 public string direction; // asc , desc ;
89 public target target;
90 }
91 }代码2: template类,用于生成checkbox列


1 using system;
2 using system.web;
3 using system.web.ui;
4 using system.web.ui.webcontrols;
5
6 namespace xxware.xxcontrols
7 {
8 #region selector template
9 public class xxgridcolumntemplate : itemplate
10 {
11 public void instantiatein(control container)
12 {
13 checkbox cb = new checkbox();
14 cb.id = "fargv_columnselector";
15 cb.clientidmode = clientidmode.autoid;
16 cb.css教程class = "far_rowsselector";
17 container.controls.addat(0, cb);
18 }
19 }
20
21 public class xxgridheadertemplate : itemplate
22 {
23 public void instantiatein(control container)
24 {
25 system.web.ui.htmlcontrols.htmlinputcheckbox selectall = new system.web.ui.htmlcontrols.htmlinputcheckbox();
26 selectall.id = "fargv_columnselectorall";
27 selectall.clientidmode = clientidmode.static;
28 selectall.attributes["onclick"] = "fargridview_columnselectorall();";
29 container.controls.add(selectall);
30 }
31 }
32
33 #endregion
34
35 }

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索string
, 对象
, 排序
, this
, null
using
datatable checkbox、datatable加checkbox、gridview datatable、gridview转datatable、c gridview datatable,以便于您获取更多的相关知识。

时间: 2024-10-26 14:59:05

GridView,DataTable和List排序,SQL分页 支持CheckBox选择的相关文章

在ASP.NET MVC5中实现具有服务器端过滤、排序和分页的GridView

背景 在前一篇文章<[初学者指南]在ASP.NET MVC 5中创建GridView>中,我们学习了如何在 ASP.NET MVC 中实现 GridView,类似于 ASP.NET web 表单的功能.通过前文,我们已经了解到使用 jQuery 插件的数据表可以很容易地实现具有搜索.排序和分页等重要功能的表格. 前文中需要注意的是,所有通过插件实现的特性都是客户端的,这意味着所有的数据都首先在页面载入,然后由插件来处理客户端搜索.分页和排序的数据.如果数据表不是特别大,这么做是可以的:但是,如

[转]asp.net中对DataTable数据进行排序、检索、合并、分页、统计

asp.net中对DataTable数据进行排序.检索.合并.分页.统计    一.排序 1 获取DataTable的默认视图 2 对视图设置排序表达式 3 用排序后的视图导出的新DataTable替换就DataTable (Asc升序可省略,多列排序用","隔开) DataView dv = dt.DefaultView; dv.Sort = "id Asc,name Desc"; dt = dv.ToTable(); 二.检索 1 设置查询字符串 2 使用Sel

支持任意排序的分页存储过程(asp.net/sqlserver)

 代码如下 复制代码 ------------------------------------  --用途:支持任意排序的分页存储过程  --说明:  ------------------------------------    CREATE PROCEDURE [dbo].[UP_GetRecordByPageOrder]    @tblName varchar(255),   -- 表名  @fldName varchar(255),   -- 显示字段名  @OrderfldName v

利用jquery实现GridView异步排序、分页

经常会用到jquery.ui.tabs标签,如我们可以把备份管理放在一个页面上,而该页面有两个tab分别为 备份和还原,但这样会现在这个页面臃肿,每次请求备份管理页面时,服务端会把所以的备份还原信息都 传到客户端,然后ui.tabs将两种信息折叠起来分别显示,好在ui.tabs给我提供ajax功能,我们的每个 tab可以直接应用另外一个页面 如: <div id="container"> <ul> <li><a href="#frag

JS实现table表格数据排序功能(可支持动态数据+分页效果)_javascript技巧

asp.net会经常遇到分页的效果,尤其是希望实现静态的html分页排序(html分页相信大家都已经有自己的解决方案.在这里就不多说).我写了一个简单的Demo排序. 数据就是字母和数字两组.(汉字需要找到asc码) 原理就是利用数组自带的sort排序,进行表格重组.已在.net mvc 中测试过.支持分页.(申明一点.只对当前页面数据排序 无刷新,对所有页面排序的话,肯定需要刷新.这点我还在解决中.)希望有新想法的高手们,给下指点. 下面把html的代码贴出来: <!DOCTYPE HTML

利用jQuery 实现GridView异步排序、分页的代码_jquery

每次请求备份管理页面时,服务端会把所以的备份还原信息都传到客户端,然后ui.tabs将两种信息折叠起来分别显示,好在ui.tabs给我提供ajax功能,我们的每个tab可以直接应用另外一个页面 如: 复制代码 代码如下: <div id="container"> <ul> <li><a href="#fragment-1"><span>备份</span></a></li>

SQL行号排序和分页(SQL查询中插入行号 自定义分页的另类实现)_MsSql

(一)行号显示和排序 1.SQL Server的行号 A.SQL 2000使用identity(int,1,1)和临时表,可以显示行号 SELECT identity(int,1,1) AS ROWNUM, [DataID] INTO #1 FROM DATAS order by DataID; SELECT * FROM #1 B.SQL 2005提供一个很好用的函数row_number(), 可以直接用来显示行号,当然也可以使用SQL 2000的identity SELECT row_num

在ASP.NET 2.0中操作数据之二十六:排序自定义分页数据_自学过程

导言 和默认翻页方式相比,自定义分页能提高几个数量级的效率.当我们的需要对大量数据分页的时候就需要考虑自定义分页,然而实现自定义分页相比默认分页需要做更多工作.对于排序自定义分页数据也是这样,在本教程中我们就会扩展前面的例子来实现自定义分页数据的排序. 注意:既然本教程是基于前一个的,因此我们需要把前面教程示例页面EfficientPaging.aspx的<asp:Content>元素中的代码复制到本教程SortParameter.aspx示例页面中.关于如何进行这样的复制操作请参看为删除数据

sql分页查询几种写法_MsSql

关于SQL语句分页,网上也有很多,我贴一部分过来,并且总结自己已知的分页到下面,方便日后查阅 1.创建测试环境,(插入100万条数据大概耗时5分钟). create database DBTest use DBTest --创建测试表 create table pagetest ( id int identity(1,1) not null, col01 int null, col02 nvarchar(50) null, col03 datetime null ) --1万记录集 declar