每日学习心得: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 ...
随机推荐
- 第二个Sprint冲刺第五天
讨论地点:qq 讨论成员:邵家文.李新.朱浩龙.陈俊金 今天工作:测试了数据的传输,总共用了三个方案,其中两个失败了,一个成功了. 开发感悟:今天吃完饭就赶着发博客了,最近有几个朋友令我特别的烦,翻脸 ...
- setInterval 函数传参(方法一)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- java 的复用工具 - jar包
前言 Java提供了jar包的机制,使得已经开发好了的类能够顺利的被将来的工程所复用. 本章主要讲解如何使用这种工具. 包的作用 包能够将不同功用的类组织起来,从而确保类名的唯一性. 为了保证包名的唯 ...
- (实用篇)PHP缓存类完整实例
本文完整描述了一个简洁实用的PHP缓存类,可用来检查缓存文件是否在设置更新时间之内.清除缓存文件.根据当前动态文件生成缓存文件名.连续创建目录.缓存文件输出静态等功能.对于采用PHP开发CMS系统来说 ...
- LCS (nlogn)
最长上升子序列的O(n*logn)算法分析如下: 先回顾经典的O(n^2)的动态规划算法,设a[t]表示序列中的第t个数,dp[t]表示从1到t这一段中以t结尾的最长上升子序列的长度,初始时设dp [ ...
- poj 3159 dijkstra 最短路
Description During the kindergarten days, flymouse was the monitor of his class. Occasionally the he ...
- Python简史
Python简史 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python是我喜欢的语言,简洁,优美,容易使用.前两天,我很激 ...
- Codeforces Round #123 (Div. 2)
A. Let's Watch Football 记时间为\(t\), 则\(bt+(b-a)c>=0\),可得\[t \ge \frac{c(a-b)}{b}\] B. After Traini ...
- 2016 Sichuan Province Programming Contest
2016 Sichuan Province Programming Contest 代码 2016 Sichuan Province Programming Contest A. Nearest Ne ...
- mac下使用Solarized配色方案
Solarized配色方案不用多介绍了.具体点击这里:http://ethanschoonover.com/solarized 我们首先搞定macvim 你需要下载solarized.vim配色文件, ...