很久都没写了,我比较懒。今天想到还是写一店店,也方便我自己查找,虽然有些做成了模板使用。
首先还是一个老话题——DataGrid,越用越觉得这个东西的确是个经典的东西,但是Micosoft的东西从来都感觉比较死板,所以用datalist或者table来实现界面上也好看,最近看了一些关于ajax的东西,里面的datagrid就爽的很,书归正传,还是先说说这个DataGrid。
实现DataGrid中的数据转换到Excel中:
这个也是我因为要用到这个功能才去找的,开始弄了半天没弄出来,后来终于弄出来了,要点就是DataGrid不要加任何样式-_-!
代码如下:
还有一种是把dataview中的数据输出到Excel文件。
这里是输出为csv文件,如果要输出为xls文件,就把","换成"/t",然后文件后缀换成xls就可以勒。以此例就可以推出用dataset,datatable输出为xls文件。
这里还有一个网友写的使用API实现输出到xls的一个例子 下载
现在说一下DataGrid中实现象winform中的DataGrid一样点一列名就排序的功能。这个其实也是自带的,实现这个功能我推荐使用xml+datagrid,因为这样速度会比较快。
首先建立datagrid并且加入事件 OnSortCommand="Sort_Grid",在列中加入SortExpression,这个就是排序的关键字。
OnSortCommand="Sort_Grid"
这样就可以了。
首先还是一个老话题——DataGrid,越用越觉得这个东西的确是个经典的东西,但是Micosoft的东西从来都感觉比较死板,所以用datalist或者table来实现界面上也好看,最近看了一些关于ajax的东西,里面的datagrid就爽的很,书归正传,还是先说说这个DataGrid。
实现DataGrid中的数据转换到Excel中:
这个也是我因为要用到这个功能才去找的,开始弄了半天没弄出来,后来终于弄出来了,要点就是DataGrid不要加任何样式-_-!
代码如下:
Response.Clear();
Response.Buffer = true ;
Response.Charset = " GB2312 " ;
Response.AppendHeader( " Content-Disposition " , " attachment;filename=test.xls " );
Response.ContentEncoding = System.Text.Encoding.GetEncoding( " GB2312 " );
Response.ContentType = " application/ms-excel " ;
this .EnableViewState = false ;
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo( " ZH-CN " , true );
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this .datagrid1.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
其中首先定义字体,test.xls这个是输出的文件名,然后设置输出字体是简体的,以及文件是Excel文件,剩下就是读数据为流,再使用这个流写出到test.xls文件。
Response.Buffer = true ;
Response.Charset = " GB2312 " ;
Response.AppendHeader( " Content-Disposition " , " attachment;filename=test.xls " );
Response.ContentEncoding = System.Text.Encoding.GetEncoding( " GB2312 " );
Response.ContentType = " application/ms-excel " ;
this .EnableViewState = false ;
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo( " ZH-CN " , true );
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this .datagrid1.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
还有一种是把dataview中的数据输出到Excel文件。
StringWriter sw
=
new
StringWriter();
sw.WriteLine( " 列1,列2,列3 " );
for ( int i = 0 ;i < dataview.Count;i ++ )
{
sw.WriteLine(dataview.Table.Rows[i][ " L1 " ].ToString() + " , " + dataview.Table.Rows[i][ " L2 " ].ToString() + " , " + dataview.Table.Rows[i][ " L3 " ].ToString());
}
sw.Close();
Response.AddHeader( " Content-Disposition " , " attachment; filename=thetest.csv " );
Response.ContentType = " application/ms-excel " ;
Response.ContentEncoding = System.Text.Encoding.GetEncoding( " GB2312 " );
Response.Write(sw);
Response.End();
sw.WriteLine( " 列1,列2,列3 " );
for ( int i = 0 ;i < dataview.Count;i ++ )
{
sw.WriteLine(dataview.Table.Rows[i][ " L1 " ].ToString() + " , " + dataview.Table.Rows[i][ " L2 " ].ToString() + " , " + dataview.Table.Rows[i][ " L3 " ].ToString());
}
sw.Close();
Response.AddHeader( " Content-Disposition " , " attachment; filename=thetest.csv " );
Response.ContentType = " application/ms-excel " ;
Response.ContentEncoding = System.Text.Encoding.GetEncoding( " GB2312 " );
Response.Write(sw);
Response.End();
这里是输出为csv文件,如果要输出为xls文件,就把","换成"/t",然后文件后缀换成xls就可以勒。以此例就可以推出用dataset,datatable输出为xls文件。
这里还有一个网友写的使用API实现输出到xls的一个例子 下载
现在说一下DataGrid中实现象winform中的DataGrid一样点一列名就排序的功能。这个其实也是自带的,实现这个功能我推荐使用xml+datagrid,因为这样速度会比较快。
首先建立datagrid并且加入事件 OnSortCommand="Sort_Grid",在列中加入SortExpression,这个就是排序的关键字。
<
asp:BoundColumn DataField
=
"
name
"
HeaderText
=
"
用户名
"
/>
< asp:BoundColumn DataField = " id " HeaderText = " 用户编号 " />
< asp:BoundColumn DataField = " money " SortExpression = " money " HeaderText = " 金钱 " />
< asp:BoundColumn DataField = " id " HeaderText = " 用户编号 " />
< asp:BoundColumn DataField = " money " SortExpression = " money " HeaderText = " 金钱 " />
OnSortCommand="Sort_Grid"
public
void
Sort_Grid(Object sender, DataGridSortCommandEventArgs e)
{
sortstr = e.SortExpression + " desc " ;
// 绑定datagrid的函数
}
{
sortstr = e.SortExpression + " desc " ;
// 绑定datagrid的函数
}
绑定的函数这里使用xml然后读取到dataview使用Sort属性=sortstr来实现排序。
这样就可以了。
还有就是最近有人问DataGrid中使用自定义控件的时候绑定多个字段,这个就是在里面多加几个属性就是了,比如:
<
asp:TemplateColumn HeaderText
=
"
列名
"
HeaderStyle
-
Width
=
"
70
"
ItemStyle
-
Width
=
"
100
"
>
< itemtemplate >
< user:usercontrol id = " name1 " runat = " server " uid =<% # DataBinder.Eval(Container.DataItem, " name " ) %> sid =<% # DataBinder.Eval(Container.DataItem, " name " ) %> lid =<% # DataBinder.Eval(Container.DataItem, " name " ) %>/>
</ itemtemplate >
</ asp:TemplateColumn >
< itemtemplate >
< user:usercontrol id = " name1 " runat = " server " uid =<% # DataBinder.Eval(Container.DataItem, " name " ) %> sid =<% # DataBinder.Eval(Container.DataItem, " name " ) %> lid =<% # DataBinder.Eval(Container.DataItem, " name " ) %>/>
</ itemtemplate >
</ asp:TemplateColumn >
这样就可以了。