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解决数据绑定列数据展示过长问题的更多相关文章

  1. 导出csv文件时韩文乱码解决方法

    从asp.net导出csv这样配置可以防止韩文等乱码,在头部加上0xEF, 0xBB, 0xBF: string fileName = "attachment;filename=" ...

  2. PHP导出CSV文件出现乱码的解决方法

    在做项目时碰到使用外语的情况下,我们就会使用UTF-8编码.但是,在用PHP导出CSV文件时,如果写入的数据是使用UTF-8编码的日语.韩语之类的外文,就会出现乱码. 要解决PHP生成CSV文件的乱码 ...

  3. 导出csv文件数字会自动变科学计数法的解决方法

    其实这个问题跟用什么语言导出csv文件没有关系.Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法:如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0.解决 ...

  4. 转:导出csv文件数字会自动变科学计数法的解决方法

    导出csv文件数字会自动变科学计数法的解决方法   其实这个问题跟用什么语言导出csv文件没有关系.Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法:如果数字大于15位,它不仅用于科 ...

  5. mysql导出csv文件excel打开后数字用科学计数法显示且低位变0的解决方法

    Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法:如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0. Excel打开csv文件时,只要字段值都是数字,它 ...

  6. MySQL直接导出CSV文件,并解决中文乱码的问题

    需求: 需要导出hr_users 表中的部分字段的数据,以前是用PHP写脚本,然后导出CSV文件. 在MySQL中,它自己就能导出CSV文件 ,只不过是有如下几个问题需要大家解决. 1. 生成文件不成 ...

  7. C#将DataTable数据导出CSV文件

    C#将DataTable数据导出CSV文件通用方法! //导出按钮调用导出方法    protected void btnCSV_Click(object sender, EventArgs e)   ...

  8. 每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码

    2013-9-15 1.    CustomValidator验证控件验证用户输入的字符长度 在实际的开发中通常会遇到验证用户输入的字符长度的问题,通常的情况下,可以写一个js的脚本或者函数,在ASP ...

  9. c# DataTable 导出csv文件

    using System; using System.Data; using System.Configuration; using System.Collections.Generic; using ...

随机推荐

  1. JS的强大

    JS很强大,对于网页设计者来说,会用JS真的很重要. 学好我的linux,和数据结构.

  2. Ensemble Approaches分类技术

    所谓ensemble learning,简单来说,是指综合多种基础模型或弱分类器来完成最终的决策的机器学习方法. Bagging和Boosting(之前所提到的Adaboost)都属于这类方法. Co ...

  3. javascript中 IE事件处理程序中try catch用法

    本例是学习中笔记 望指正批评! <input id='b1' type='button' value='按钮'/> <script> window.onload=functio ...

  4. PostgresSQL 学习资料记录处

    PostgresSQL 学习资料记录处  博客:http://francs3.blog.163.com PostgreSQL9.4 中文手册:http://www.postgres.cn/docs/9 ...

  5. javascript 字符串方法名调用

    项目中有时候需要通过字符串传递方法名称,供页面调用 var ParameterDefaultCallMethod = Request("ParameterDefaultCallMethod& ...

  6. public static void main(String[] args){}函数诠释

    public static void main(String[] args){}函数诠释 主函数的一般写法如下: public static void main(String[] args){-} 下 ...

  7. WEBRTC源码片段分析(1)音频缓冲拷贝

    源码位置webrtc/webrtc/modules/audio_device/ios/audio_device_ios.cc函数OSStatus AudioDeviceIPhone::RecordPr ...

  8. 转:db2 iptables相关用法(1)

    如果你的IPTABLES基础知识还不了解,建议先去看看. 开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables - ...

  9. WebSphere中对response.sendError()的处理与Tomcat不同

    不同的地方在于,同样的代码[response.sendError(1);] 在Tomcat下,response.getResponseCode()的值是 1,而在Websphere下面则是 500. ...

  10. 工作中遇到的问题--BindException

    org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResu ...