每日学习心得:Linq解决DataTable按照某一列的值排序问题/DataTable 导出CSV文件/巧用text-overflow解决数据绑定列数据展示过长问题
2013-8-5
1 Linq解决DataTable按照某一列的值排序
在之前的总结中提到过对拼接而成的复合的DataTable按照某一列值的大小排序,那个主要的思想是在新建表结构时将要排序的那一列的值设为int型。
但是在实际的开发中,可能会需要按照某一列的值排序,而数值可能为整型或者浮点型,这个时候我们用Linq 就可以很好的解决这样的问题。
主要实现方法如下:
private DataTable GetDataTableOrder(DataTable dt)
{
EnumerableRowCollection<DataRow> rows = from row in dt.AsEnumerable()
orderby Convert.ToInt32(row[2]) descending
select row;
dt = rows.CopyToDataTable();
return dt;
}
如果要排序的列的值为浮点型,可将 orderby 后代码改为如下:
Orderby Convert.ToDecimal(row[2])其中row[2]为行中的要排序的列。
2 巧用text-overflow属性
我们在进行列表绑定的时候,某些列的内容会特别的长,甚至在答道最大长度之后依然显示不下,所以就会出现换行什么的,影响整个界面的美观。通常为了解决这样的问题,可能都是在进行数据绑定时,调用后台的一个处理方法,将要展示的内容控制在一定的长度内。今天我们使用一种简便有效的方法来解决这个问题。在css样式中有一个text-overflow属性,通过合理的利用该属性可以巧妙的解决上边所诉问题。
我们可以为要展示的内容可能过长的那一列设置如下的样式即可解决该问题,样式如下:
<style type="text/css">
.flow{
text-overflow:ellipsis ;
white-space:nowrap ;
overflow:hidden ;
}
<div class="flow" style="width:100px;background:lightblue;">
dsfdsfdsfdsfdsfdsfdfdsf
</div>
效果图:
Text-overflow:有两个属性值clip和ellipsis
Clip:只是简单的裁剪,不显示….
Ellipsis:显示….
同时需要注意的是,必须为其设置固定的宽度,同时配合overflow属性共同起作用。
Overflow属性为当内容溢出时作出的处理,其属性值有以下几种:
hidden为隐藏不显示
scroll为滚动显示,显现滚动条
visible默认值,不做处理直接显示
auto如果内容被修改,则滚动显示
inherit继承父属性的overflow值
3 DataTable 导出为CSV文件
项目中有需求将检索到的数据导出为数据文件,原本做好的是导出为Excel文件,但是那样的话还需要调用office组件,所以后来商议过后就将数据转换为csv文件导出,很简单使用的一个方法跟大家分享下。
将DataTable方法转换将到到处的csv格式的字符串。
/// <summary>
/// 将DataTable转换为字符串
/// </summary>
/// <param name="tb"></param>
/// <returns></returns>
public static string ExportCSVFile(DataTable tb)
{
StringBuilder sb = new StringBuilder();
//遍历列名
int i = 0;
foreach (DataColumn column in tb.Columns)
{
if (i > 0) sb.Append(",");
sb.Append("\"" + column.ColumnName + "\"");
i++;
} sb.Append("\n"); //导出每行每列对应的数据 foreach (DataRow row in tb.Rows)
{
int j = 0;
foreach (DataColumn column in tb.Columns)
{
if (j > 0) sb.Append(",");
sb.Append("\"" + row[column].ToString() + "\"");
j++;
}
sb.Append("\n");
}
string s = sb.ToString(); //对产生的字符串进行字节编码
Byte[] bytes = Encoding.Convert(Encoding.Default, Encoding.UTF7, Encoding.Default.GetBytes(s)); return s;
}
在当前的aspx页的按钮的Click事件中导出,具体使用如下:
protected void ExportCSV_Click(object sender, EventArgs e)
{
//设置输出流的字符集/编码/内容格式等
Response.Clear();
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.HeaderEncoding = System.Text.Encoding.UTF8;
Response.ContentType = "text/csv";
//设置输出头
Response.AddHeader("Content-Disposition", "attachment; filename=DownloadedData.csv;");
Response.BinaryWrite(new byte[] { 0xEF, 0xBB, 0xBF });
string result=ExportCSVFile(DataTable);
Response.Write(result);
Response.Flush();
Response.End();
}
每日学习心得:Linq解决DataTable按照某一列的值排序问题/DataTable 导出CSV文件/巧用text-overflow解决数据绑定列数据展示过长问题的更多相关文章
- 导出csv文件时韩文乱码解决方法
从asp.net导出csv这样配置可以防止韩文等乱码,在头部加上0xEF, 0xBB, 0xBF: string fileName = "attachment;filename=" ...
- PHP导出CSV文件出现乱码的解决方法
在做项目时碰到使用外语的情况下,我们就会使用UTF-8编码.但是,在用PHP导出CSV文件时,如果写入的数据是使用UTF-8编码的日语.韩语之类的外文,就会出现乱码. 要解决PHP生成CSV文件的乱码 ...
- 导出csv文件数字会自动变科学计数法的解决方法
其实这个问题跟用什么语言导出csv文件没有关系.Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法:如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0.解决 ...
- 转:导出csv文件数字会自动变科学计数法的解决方法
导出csv文件数字会自动变科学计数法的解决方法 其实这个问题跟用什么语言导出csv文件没有关系.Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法:如果数字大于15位,它不仅用于科 ...
- mysql导出csv文件excel打开后数字用科学计数法显示且低位变0的解决方法
Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法:如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0. Excel打开csv文件时,只要字段值都是数字,它 ...
- MySQL直接导出CSV文件,并解决中文乱码的问题
需求: 需要导出hr_users 表中的部分字段的数据,以前是用PHP写脚本,然后导出CSV文件. 在MySQL中,它自己就能导出CSV文件 ,只不过是有如下几个问题需要大家解决. 1. 生成文件不成 ...
- C#将DataTable数据导出CSV文件
C#将DataTable数据导出CSV文件通用方法! //导出按钮调用导出方法 protected void btnCSV_Click(object sender, EventArgs e) ...
- 每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码
2013-9-15 1. CustomValidator验证控件验证用户输入的字符长度 在实际的开发中通常会遇到验证用户输入的字符长度的问题,通常的情况下,可以写一个js的脚本或者函数,在ASP ...
- c# DataTable 导出csv文件
using System; using System.Data; using System.Configuration; using System.Collections.Generic; using ...
随机推荐
- js获取非行内样式
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- sticky bit
• Sticky Bit这个Sticky Bit当前只针对目录有效,对文件没有效果.SBit对目录的作用是:“在具有SBit的目录下,用户若在该目录下具有w及x权限,则当用户在该目录下建立文件或目录时 ...
- Nginx技巧:灵活的server_name,Nginx配置一个服务器多个站点 和 一个站点多个二级域名
http://www.cnblogs.com/buffer/archive/2011/08/17/2143514.html Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活 ...
- 无法Ping通windows 7主机
今天在使用Filezilla FTP_SERVER新建了一个windows主机上的FTP服务器. 建立完成之后,从MAC上无法进行连接也甚至连主机也无法连接,怀疑是防火墙的问题. 网上一搜确实是,但是 ...
- windows 任务栏图标宽度固定
这个需要修改注册表. win+r regedit ->enter 找到以下项 HKEY_CURRENT_USER-Control Panel-Desktop-WindowsMetrics 新建字 ...
- java如何获取当前机器ip和容器port
获取当前机器ip: private static String getIpAddress() throws UnknownHostException { InetAddress address = I ...
- c#部分--- 一维数组放到集合中,在从集合中提取输出
输入班级人数,统计人名,性别,年龄: 建立一维数组,并放到集合中: //Console.Write("请输入班级人数:"); //int a = int.Parse(Console ...
- Eclipse中web-inf和meta-inf文件夹的信息
http://www.cnblogs.com/chinafine/archive/2010/06/13/1757514.html WEB-INF /WEB-INF/web.xml ...
- Java基础了解
今天刚开始学习Java,除了老师讲的之外,又进一步上网去了解了下Java的相关知识: Java语言的主要特点: 1. 跨平台性 所谓的跨平台性,是指软件可以不受计算机硬件和操作系统的约束而在任意计算机 ...
- hihoCoder#1107 : Shortest Proper Prefix (前缀树)
题目大意:在n个单词中,如果以s作为前缀的单词个数不超过5个,那么称s为proper prefix.如果s为proper prefix并且s的任何一个前缀(不包括s)都不是proper prefix, ...