if (!string.IsNullOrEmpty(strQuyu) && !string.IsNullOrEmpty(strZuhao)){string[] param = { };dt = proB.GetProcedureTable("pro_jetj", param, "pro_jetj");}dt.Columns.Add("C");//循环加入一列的数据foreach (DataRow row in dt.Rows)row["C"] = row["countMoneySg"].ToString() + row["countMoneySj"].ToString() + row["countMoneyYF"].ToString() + row["countMoneyJJ"].ToString();DataView dv = dt.DefaultView;dv.Sort = "C";rpt_Jepm.DataSource = dt;rpt_Jepm.DataBind();

 dt_tj = proB.GetProcedureTable("pro_GetCgl", param, "pro_GetCgl");//此处把成功率加进来,即加五个列dt_tj.Columns.Add("A");dt_tj.Columns.Add("B");dt_tj.Columns.Add("C");dt_tj.Columns.Add("D");dt_tj.Columns.Add("E");DataView dv = new DataView();

之前的没有指定列的类型,以至于出现排序是按第一个数字排的顺序(如图),其实可以理解,没有给他指定类型那么他默认就是object类型,现在改了,在添加列的时候并给其添加类型:

 dt_tj = proB.GetProcedureTable("pro_GetCgl", param, "pro_GetCgl");//此处把成功率加进来,即加五个列dt_tj.Columns.Add("A",typeof(double));dt_tj.Columns.Add("B",typeof(double));dt_tj.Columns.Add("C", typeof(double));dt_tj.Columns.Add("D",typeof(double));dt_tj.Columns.Add("E",typeof(double));DataView dv = new DataView();//循环加入一列的数据if (dt_tj.Rows.Count > 0){foreach (DataRow row in dt_tj.Rows){if (string.IsNullOrEmpty(row["bgq"].ToString().Trim()) || row["syq"].ToString().Trim() == "0"){row["A"] = "0";}else{row["A"] = Convert.ToDouble((Convert.ToDouble(row["bgc"].ToString().Trim()) / Convert.ToDouble(row["bgq"].ToString().Trim())*100).ToString("0.00"));}if (string.IsNullOrEmpty(row["cyq"].ToString().Trim()) || row["cyq"].ToString().Trim() == "0"){row["B"] = "0";}else{row["B"] = Convert.ToDouble((Convert.ToDouble(row["cyc"].ToString().Trim()) / Convert.ToDouble(row["cyq"].ToString().Trim()) * 100).ToString("0.00"));}if (string.IsNullOrEmpty(row["syq"].ToString().Trim()) || row["syq"].ToString().Trim() == "0"){row["C"] = "0";}else{row["C"] =Convert.ToDouble((Convert.ToDouble(row["syc"].ToString().Trim()) / Convert.ToDouble(row["syq"].ToString().Trim()) * 100).ToString("0.00"));}if (string.IsNullOrEmpty(row["jdq"].ToString().Trim()) || row["jdq"].ToString().Trim() == "0"){row["D"] = "0";}else{row["D"] =Convert.ToDouble(( Convert.ToDouble(row["jdc"].ToString().Trim()) / Convert.ToDouble(row["jdq"].ToString().Trim()) * 100).ToString("0.00"));}if (string.IsNullOrEmpty(row["qtq"].ToString().Trim()) || row["qtq"].ToString().Trim() == "0"){row["E"] = "0";}else{row["E"] = Convert.ToDouble((Convert.ToDouble(row["qtc"].ToString().Trim()) / Convert.ToDouble(row["qtq"].ToString().Trim()) * 100).ToString("0.00"));}}

这才是想要的结果。

下面是另一种排序方法:

 DataRow[] rows = dt_tj.Select("", "[A] DESC");DataTable tblCopy = new DataTable("tablename");tblCopy = dt_tj.Clone();foreach (DataRow row in rows){tblCopy.ImportRow(row);}dt_tj = tblCopy;

 注:如上生成了一个 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! 

附:dc.DataType = typeof(bool); dc.DataType = typeof(System.Boolean); dc.DataType = Type.GetType("System.Boolean");// 这句效率底下,不建议使用,

转载于:https://www.cnblogs.com/tianrui/p/3326746.html

dataTabel转成dataview插入列后排序相关推荐

  1. SAP IQ02 将A序列号改成B序列号后,无修改记录?

    SAP IQ02 将A序列号改成B序列号后,无修改记录? IQ02 可以将某个序列号,改成另外一个序列号.如下所示,序列号154470188180018,物料号74000043, 要将该序列号改成一个 ...

  2. springboot打包成jar包后找不到xml,找不到主类的解决方法

    springboot打包成jar包后找不到xml,找不到主类的解决方法 参考文章: (1)springboot打包成jar包后找不到xml,找不到主类的解决方法 (2)https://www.cnbl ...

  3. 解决eclipse中java项目导出成jar包后读写UTF-8文件中文乱码问题

    最近遇到了一个小麻烦,就是在eclipse环境中读写UTF-8格式的txt文件时很正常,但是当导出成jar包后,通过点击来读写文件时出现了部分中文乱码问题. 解决办法: 开始时用的是FileReade ...

  4. C语言输入end时结束程序,给大家一个程序,输入多个字符串以END结束后排序,这个程序运行,即结果都是对的。...

    给大家一个程序,输入多个字符串以END结束后排序,这个程序运行,即结果都是对的. /*输入多个字符串以END结束后排序*/ #include #include main() {char a[20][3 ...

  5. Intel Realsense D435 opencv 为什么将color图转换成灰度图后,再与depth图水平堆叠,其结果一片黑色?(数据未map到0-255)

    相关代码 # -*- coding: utf-8 -*- """ @File : obstacle_detection.py @Time : 2019/12/11 10: ...

  6. 安卓手机如何防盗_iphone手机换成安卓手机后如何转移便签备忘录数据?

    原标题:iphone手机换成安卓手机后如何转移便签备忘录数据? 随着信息时代的到来,智能手机在国内已经接近于全面普及,但与此同时,它也逐渐成为了这个时代下的快消品,因为不管价值如何,它们都有使用年限, ...

  7. php打包运行不了,python,_python打包成exe格式后,在部分机子上没法运行,python - phpStudy...

    python打包成exe格式后,在部分机子上没法运行 使用py2exe将python脚本打包成exe格式. 生成好后,本地运行start.exe可以正常运行.但是放到其他的机子上,部分机子没法运行该e ...

  8. t3财务系统访问服务器很慢,用友T3软件以前用的是WINDOWS自带的经典桌面,但换成其他桌面后发现远程接入软件使用时的访问速度明显变慢?-用友T3...

    文章摘要:用友T3软件以前用的是WINDOWS自带的经典桌面,但换成其他桌面后发现远程接入软件使用时的访问速度明显变慢?以前用的是WINDOWS自带的经典桌面,但换成其他桌面后发现远程接入软件使用时的 ...

  9. group by分组查询后排序

    group by分组查询后排序 如:分组查询 SELECT s.name name,COUNT(s.id) value FROM t_setmeal s,t_order o WHERE s.id=o. ...

  10. 在Manjaro中Debtap将deb文件转换成pkg文件后,怎么解压生成的.pkg.tar.xz包?

    接上篇博客,本篇博客解决的问题如下: 在Manjaro中Debtap将deb文件转换成pkg文件后,怎么处理生成的.pkg.tar.xz压缩包? 解决办法如下: 以我的mnetassist-0.1.1 ...

最新文章

  1. 更改Windows Server Core 2008计算机名字和配置网络连接
  2. python-01实现考勤表添加与删除
  3. 用户,群组和权限 二
  4. 【BOM精讲】BOM 进阶
  5. 开源RTMP组件EasyPusher-Android+EasyDarwin实现APP推流给RTSP流媒体服务器
  6. iOS进阶 - iOS如何监控崩溃
  7. ESP32又有新玩法了,启明云端把它带入到冷门行业--测试治具
  8. JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
  9. 使用 Cake 推送 NuGet 包到 AzureDevops 的 Artifacts 上
  10. python提取txt数据到excel_python 读取txt中每行数据,并且保存到excel中的实例
  11. 计算机网络中的传输协议是_计算机网络中的传输方式
  12. 跨平台开源通讯组件elastic communication
  13. MVC4网站发布到windows server 2003服务器
  14. linux系统管理考试试题及答案,Linux系统管理一测试题-附答案
  15. CPU自制入门 第三章 编程
  16. ChineseBERT: Chinese Pretraining Enhanced by Glyph and Pinyin Information
  17. 2015年国际数学奥林匹克(IMO)试题
  18. 西门子实数转整数_实数如何转换为整数
  19. 2021南昌市地区高考成绩排名查询,2021南昌中小学国编成绩排名/分数线
  20. [生存志] 第87节 张仪犀首纵横大战

热门文章

  1. 滴滴金融2019新招数:大“桔”为重? 1
  2. PHP证券交易员学习网站mysql数据库web结构apache计算机软件工程网页wamp
  3. DROP USER c##xyt CASCADE > ORA-01940: 无法删除当前连接的用户
  4. vue 复制粘贴功能(进入页面获取剪切板中的内容)
  5. DRM全解析 —— CREATE_DUMB(2)
  6. SpringSocial基本原理
  7. 机房动力环境监控系统怎么节能
  8. 【概念、概述】Spark入门教程[1]
  9. 【论文阅读】略读 基于注意力门控图神经网络的文本分类
  10. 计算机网络--三种网络层次模型(2)