C#:将DataTable绑定到GridView时更改列的顺序

如何从DataTable更改列的显示顺序?

例如,dataTable“dt”包含两列“a”和“b”。 我将它绑定到GridView,如下所示:

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

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

重点:我正在使用它导出到Excel,并且没有实际输出到屏幕,使用:

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

谢谢!

是的,你可以在前端做到这一点。 这些方面的东西:

       

编辑:

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

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

(现在假设C#3不是很酷吗?)

这经常出现在面试问题中。 您正在将表的内容转储到excel文件,这很好,并且您在xl中使用html,这很好。 但是 – 您正在获取数据库表的内容并将其放入内存(DataTable)。 随着这些数据的增长,它可能会在服务器上使用越来越多的内存,特别是如果有这个报告的并发请求!

修复:改为使用DataReader并手动填充GridView(这解决了您发布的问题) – 或者更好地使用Simple OOXML之类的东西,并将数据直接写入.xlsx电子表格的xml表示。