2010-03-31 72 views
4

如何更改DataTable中列的显示顺序?C#:将DataTable绑定到GridView时更改列的顺序

例如,dataTable“dt”包含两列“a”和“b”。我把它绑定到一个GridView是这样的:

gridView.DataSource = dt; 
gridView.DataBind(); 

但我希望GridView首先显示“b”(最左边)。

重要的一点:我使用这个导出到Excel,而且也没有实际输出到屏幕上,使用:

HtmlTextWriter htw = new HtmlTextWriter(sw); 
gridView.RenderControl(htw); 

谢谢!

回答

5

是的,你可以在前端做到这一点。沿着这些路线的东西:

<asp:GridView runat="server" AutoGenerateColumns="false"> 
    <Columns> 
     <asp:BoundField DataField="b" /> 
     <asp:BoundField DataField="a" /> 
    </Columns> 
</asp:GridView> 

编辑:

没有前端你说什么?这很酷 - 我喜欢挑战:

  gridView.AutoGenerateColumns = false; 
     gridView.Columns.Add(new BoundField { DataField = "b" }); 
     gridView.Columns.Add(new BoundField { DataField = "a" }); 

(这很酷,假设C#3,这些天是不是?)

+0

谢谢,我忽略了说我不输出到屏幕上,而是输出到一个excel文件,所以我实际上没有一个前端可以改变它。 – Nir 2010-03-31 12:01:59

+0

男人,你解决了这个解决方案的许多问题,你没有线索。非常感谢++ – Nir 2010-03-31 12:35:16

+0

如果你为我工作,你会遇到麻烦! – 2010-03-31 14:01:17

1

这在接受采访时问题来了经常。你正在倾销一个表的内容到一个很好的excel文件中,并且你在xl中使用了html,这很好。但是 - 您正在将数据库表的内容放入内存(DataTable)中。随着数据增长,加班可能会在服务器上使用越来越多的内存,特别是当此报告有并发请求时!

解决方法:改为使用DataReader并手动填充GridView(这可以解决您发布的问题) - 或者更好地使用类似Simple OOXML的东西,并将数据直接写入到.xlsx电子表格的xml表示形式。