[DataTable]控件排序事件中用DataView及DataTable排序
控件排序事件中用DataView及DataTable排序
文章分类:.net编程
在做ASP.NET页面开发时,经常要用到dataset(或者DataTable),绑定到DataGrid或GridView上要进行重新排序
,排序规则按照数组fids元素的顺序进行。本文将介绍如何在排序事件用DataView及DataTable实现排序功能. 一般人的做法是用DataView排序,关键代码如下: DataView dv = dt.DefaultView;
dv.Sort = "dis,发布日期 desc"; 然后把dv绑定到DataGird输出。 不过问题又来了,如果我们需要分页功能,在翻页时,我们需要ViewState等控件来保存状态啊.那么我们还是需
要用到DataTable或DataSet,
DataView本身不能被序列化,而DataView中的Table属性是未经排序的,所以它在这里不起作用. 于是有个菜鸟级土解决方法如下(只使用了简单的循环): private DataTable SortTable(DataTable dt,string[] pids) { DataTable dt0 = dt.Clone(); //复制原表结构
for(int i=;i<pids.Length;i++) { if(pids[i] != string.Empty) { DataRow[] drs = dt.Select("pos_id=" +
pids[i]); if(drs.Length > ) { foreach(DataRow dr in drs) { dt0.ImportRow(dr); //导入行 } } } }
return dt0; } 说明:就是对排序的数组循环,在datatable中找对应的行,然后复制到新表中。 该方法的效率还是可以的,不过如果交集次数大于20,,000的时候,就会有效率问题. 其实啊,新近版的.NET类库里的DataRow[]集合对象中已经有个CopyToDataTable方法可以解决DataTable排序问题
,在控件的排序事件中实现如下代码: C#代码
string currentSortColumn = this.SortColumn;//封闭ViewState变量的属性
this.SortColumn = e.SortExpression; if (currentSortColumn == this.SortColumn)
this.SortAscending = !this.SortAscending;//封闭ViewState变量的属性
else
this.SortAscending = false; DataTable dt = (DataTable)ViewState["DataSource"];
DataRow[] filter = dt.Select("",this.SortColumn + " " + (this.SortAscending? "ASC" : "DESC"));
DataTable newTable = filter.CopyToDataTable();
ViewState["DataSource"] = newTable;
this.BindDateGrid(); string currentSortColumn = this.SortColumn;//封闭ViewState变量的属性
this.SortColumn = e.SortExpression; if (currentSortColumn == this.SortColumn)
this.SortAscending = !this.SortAscending;//封闭ViewState变量的属性
else
this.SortAscending = false; DataTable dt = (DataTable)ViewState["DataSource"];
DataRow[] filter = dt.Select("",this.SortColumn + " " + (this.SortAscending? "ASC" : "DESC"));
DataTable newTable = filter.CopyToDataTable();
ViewState["DataSource"] = newTable;
this.BindDateGrid(); 但我们却不知道CopyToDataTable的效率是否足够好.
[DataTable]控件排序事件中用DataView及DataTable排序的更多相关文章
- DELPHI控件属性事件说明
常用DELPHI控件属性事件设置说明 常用DELPHI控件属性设置说明目录TForm Class TPanel组件 TToolBar Class TToolButton Class TTimer Cl ...
- GridView 动态绑定控件 OnRowCommand事件触发
主题:GridView动态生成的控件不能触发OnRowCommand事件,且点击控件按钮后,控件的值会消失. 案例, 由于公司需要绑定的数据列顺序是动态生成的,且有的数据列需要绑定Button控件.所 ...
- C#-WebForm-WebForm开发基础、如何给控件注册事件?——事件委托写法、http无状态性、三层结构
(小知识 - xml:可扩展的标记语言 html:超文本标记语言) 一.创建WebForm:新建→网站 此时文件夹中只有一个 config 文件,打开后 二.在项目下右键添加新项 在设计页面中打开 从 ...
- WinForm中动态添加控件 出现事件混乱,解决办法记录。
还是在抢票软件中出的问题,我没点击一个联系人,要生成一排控件,其中有席别combobox这样的下拉框控件,会出现如下图所示的问题:问题描述:在代码中动态创建的控件,事件混乱了,一个控件触发了所有同类型 ...
- 如何给ActiveX控件添加“事件”“属性”“标准事件”“自定义事件”等一些相关操作
上一篇小编带大家熟悉了一下ActiveX的建立以及相关的概念,(http://blog.csdn.net/u014028070/article/details/38424611) 本文介绍下如何给控件 ...
- [转] WinForm实现移除控件某个事件的方法
原文 WinForm实现移除控件某个事件的方法 本文实例讲述了WinForm实现移除控件某个事件的方法,供大家参考借鉴一下.具体功能代码如下: 主要功能部分代码如下: /// <summary& ...
- GridView控件RowDataBound事件中获取列字段值的几种途径
前台: <asp:TemplateField HeaderText="充值总额|账号余额"> <ItemTemplate> <asp:Label ID ...
- ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇
原文:ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇 第三章 为控件添加事件 好了,我们之前以前开发一个控件.而且也添加了属性,开发也很规范,但是那个控件还差最后一点:添加事件. 系列 ...
- ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇
原文:ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇 第三章 为控件添加事件 后篇 前一篇文章只是简单的说了下事件,但是大家应该方法,在ASP.NET自定义控件中只是简单那么定义事件是 ...
随机推荐
- ManifoldJS
微软推出开源工具ManifoldJS,可以自动将Web App转换成各种平台的App(安卓.iOS.Chrome OS.Windows). ManifoldJS通过获取网站meta-data信息,即可 ...
- java 实现mysql数据库导出
package com.zbb.util; import java.io.BufferedReader;import java.io.File;import java.io.FileInputStre ...
- CSS控制checkbox样式
原文地址:http://www.xiumu.org/technology/style-checkboxes-with-css.shtml#comments Checkbox复选框是一个可能每一个网站都 ...
- oracle分析函数 之分组累加求和
select s.slice_date_to ,s.made_id ,sum(s.steup_count)over(partition by s.made_id order by s.slice_da ...
- 试用fastJSON
实体类 User.java package com.test.fastjson.entity; import java.util.Date; public class User { private L ...
- html5外包—长年承接html5外包业务:《Sencha Touch权威指南》下载
<Sencha Touch权威指南>内容简介:如何才能全面而透彻地理解和掌握移动应用开发框架Sencha Touch并开发出令人心动的移动应用?<Sencha Touch权威指南&g ...
- (转)C# wnform 请求http ( get , post 两种方式 )
本文转载自:http://www.cnblogs.com/hailexuexi/archive/2011/03/04/1970926.html 1.Get请求 string strURL = &quo ...
- bzoj 3920: Yuuna的礼物
Description 转眼就要到Karin的生日了!Yuuna她们想为她准备生日礼物!现在有许多礼物被排列成了一个一维序列,每个礼物都有一个价值.Yuuna对这个序列十分感兴趣.因此,你需要多次回答 ...
- ApiCloud重新定义移动应用开发
http://www.apicloud.com/ 为APP开发者提供云端的API服务和数据存储服务,动态生成RESTful API,支持在线NoSQL数据表设计.API调试及用量分析:同时提供推送.云 ...
- 【mongodb系统学习之十二】mongodb修改数据(一)
十二.mongodb修改数据:update 1).修改数据库数据:update:语法 db.collectionName.update({},{},boolean,boolean): 2).updat ...