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. 解决magento新闻邮件发送一直处于“正在发送”状态问题

    今天在弄magento新闻邮件发送时候发现,单个邮件发送完全没有问题,但是新闻邮件订阅死活都不成功,国内国外的帖子都翻了一遍没有用,最后还是得靠自己了,于是开始慢慢找问题   首先想到是不是cront ...

  2. 解决CSS小于12px的文字在谷歌浏览器显示问题

    做前端设计的人经常要接触CSS方面的问题,估计有不少人会遇到Chrome谷歌浏览器中CSS设置字体小于12px显示不正常,强创网络在做magento模板过程中就遇到了,起初以为是自己写的CSS的问题, ...

  3. magento获取页面url的办法还有magento的常用函数

    <?php echo $this->getStoreUrl('checkout/cart');?> 获取结账页面的url:<?php echo $this->getUrl ...

  4. 【题解】【区间】【二分查找】【Leetcode】Insert Interval & Merge Intervals

    Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...

  5. u32 mac以及arp匹配

    # Examples that match MAC (a big "thank you" to Julian Anastasov for this!): M0 through M5 ...

  6. Spring AOP配置文件

    在<aop:config>...</aop:config>报错: Multiple annotations found at this line: - cvc-complex- ...

  7. Java 简介

    前言 本文大致介绍 Java 语言 什么是 Java 语言? Java 不仅仅是一门语言,Java 是一个完整的平台,有一个庞大的库,其中包含很多可重用的代码和一个提供诸如安全性,跨操作系统的可移植性 ...

  8. App_Code 引起的 ambiguously 问题

    今天遇到了一个这样的问题,一个.net framework 4.0 的web application ,下面有一个App_Code文件夹,里面的一些公共类的build action 是 Compile ...

  9. jQuery停止动画和判断是否处于动画状态

    1.停止元素的动画 stop([clearQueue][,gotoEnd]); 参数clearQHCHC和gotoEnd都足町选的参数,为Boolean值(ture或flase).clearQueue ...

  10. linux 命令-全称

    cal = CALendar calendar日历, 历法cat = CATenate 连接, 使连续cd = Change Directorychgrp = CHange GRouPchmod =  ...