DataTable实例中的数据排序
2010-06-07 17:14
274 查看
碰到一个经费统计页面,需要对统计后的结果按照金额进行排序,本来想老实的用老算法——快速排序,但由于统计结果是以数据表的形式存在于DataTable实例内,每一条数据都是一个DataRow实例,金额只是其中的一列,即一个属性,这样算法应用起来就很不方便。于是一贯“懒惰”成性的我就开始寻找另外的方法,查阅了相关资料后终于发现两种可行的方法,记录如下:
法一: DataView view = dtTbl.DefaultView;(dtTbl 是个 DataTable实例)
view.Sort = "[column], [column],...,[column] ASC|DESC";
注: 声明一个DataView实例的引用,将它指向DataTable实例的DefaultView属性,然后用DV对象的属性Sort进行排序,此属性类型是个string,[column]表示要用来作为排序标准的列名,可以有多列,从左向右排序优先级递减,ASC|DESC表示“升序”还是“降序”。不过此方法只能改表DataTable的显示方式,并不能直接改变内存里的DataRow集合的顺序,如果是把DataTable作为某个控件的间接数据源(比如DataGrid的一个DataSet数据源中的一个表),那么该控件显示出来的结果仍然是未排序的情况。
法二:DataRow[] rows = dtTbl.Select("", "[column] ASC|DESC");
DataTable tblCopy = new DataTable("tablename");
tblCopy = dtTbl.Clone();
foreach (DataRow row in rows)
{
tblRCopy.ImportRow(row);
}
注:如上生成了一个dtTbl的Copy(tblCopy = dtTbl.Clone()),即架构完全一样的空表,同时用DataTable类的实例方法Select()返回了由dtTbl中所有DataRow按ASC或者DESC排序的DataRow数组。改方法MSDN里解释得相当详细,这里不赘述。然后用一个foreach循环把排好序的DataRow数组导入新生成的DataTable,如果后面要用到排序,只要把数据集改成这个tblCopy就可以了。这里由于是新生成的DataTable,同时有重新导入了DataRow,即在内存中新开辟了一块数据区域,这样显示结果就不会变了。
注意! 法二中不能在返回排序数组后用dtTbl.Clear()方法清空dtTbl,然后用dtTbl重新导入rows, 因为 rows数组中的各项只是对dtTbl中各DataRow的引用,是浅复制,不是深复制,即只是指向原dtTbl的rows内存区,变的只是引用的顺序,而不是原dtTbl的rows的顺序,所以清空dtTbl,就相当于清空了数据源,import的结果就是空的tblCopy!
相关文章推荐
- js表格排序实例分析(支持int,float,date,string四种数据类型)
- [转]asp.net中对DataTable数据进行排序、检索、合并、分页、统计
- CSS+HTML实例集合三,用户自定义创建表格并删除指定行、列,对表格中的数据进行排序,radio单选摁扭之调查问卷、之选择题
- C#中DataTable排序、检索、合并等操作实例
- 根据Extjs中grid列表表头自动排序导出数据的实例
- DataTable数据筛选与排序
- ASP.NET读取XML某节点所有数据返回DataTable实例
- 每日学习心得:Linq解决DataTable按照某一列的值排序问题/DataTable 导出CSV文件/巧用text-overflow解决数据绑定列数据展示过长问题
- DataTable数据进行排序、检索、合并、分页、统计
- datatable加一条数据,然后排序
- DataTable中数据记录的排序、检索、合并、分页、统计
- C#中DataTable排序、检索、合并等操作实例
- DataTable数据进行排序、检索、合并、分页、统计
- 每日学习心得:Linq解决DataTable按照某一列的值排序问题/DataTable 导出CSV文件/巧用text-overflow解决数据绑定列数据展示过长问题
- asp.net中对DataTable数据进行排序、检索、合并、分页、统计
- DataSet 中的数据排序 及 DataRow装成DataTable
- 对DataTable里数据进行排序
- DataTable创建、数据的添加及数据记录的排序,检索,合并,分页,统计(整理)
- 表示用于排序、筛选、搜索、编辑和导航的 DataTable 的可绑定数据的自定义视图
- DataTable中数据记录的排序,检索,合并,分页,统计