每日学习心得: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 ...
随机推荐
- LeetCode Kth Smallest Element in a BST(数据结构)
题意: 寻找一棵BST中的第k小的数. 思路: 递归比较方便. /** * Definition for a binary tree node. * struct TreeNode { * int v ...
- 【转】apache与tomcat的区别
Apache 和 Tomcat 都是web网络服务器,两者既有联系又有区别,在进行HTML.PHP.JSP.Perl等开发过程中,需要准确掌握其各自特点,选择最佳的服务器配置. Apache是web服 ...
- discuz使用
1.discuz登陆错误过多,后台删除ip SELECT * FROM `lang_common_admincp_session` 2.Discuz与UCenter通信失败的解决方法 应用与 UCen ...
- request获取json
$.ajax({ type:'post', url:'${ctx}/recordServiceController/queryDetail.do', //contentType:'applicatio ...
- Redis安装及基本配置
一.Redis介绍 1.Redis是一个key-value存储系统 2.官方站点http://redis.io 3.Redis和Memcached类似,但支持数据持久化 4.支持更多value类型,除 ...
- phpmyadmin的安装和使用
首先在phpmyadmin的官方网站的下载页面根据自己的PHP以及MYSQL的版本下载对应的phpmyadmin版本. 图中红框部分标识此版本支持度额PHP版本以及MYADL版本. 比如此版本就是支持 ...
- 黑马程序员——JAVA基础之Vector集合
------- android培训.java培训.期待与您交流! ---------- 基本已被淘汰 枚举就是Vector特有的取出方式.枚举和迭代器很像.其实枚举和迭代是一样的. 因为枚举的名称 ...
- caffe: test code for Deep Learning approach
#include <stdio.h> // for snprintf #include <string> #include <vector> #include &q ...
- ejs使用
ejs使用 从npm上下载最新的ejs刚写了个例子 先pull出来,网上太多例子都不好用,googlecode上的代码根本下不下来,只能去翻npm安装下来的文件里的说明文件,模仿着写出来一个 var ...
- window.parent与window.openner
window.parent与window.openner区别介绍 作者: 字体:[增加 减小] 类型:转载 今天总结一下js中几个对象的区别和用法,对这几个概念混淆的朋友可以看看 今天总结一下js中几 ...