如何更改DataTable中列的显示顺序?
例如,dataTable“dt”包含两列“a”和“b”。我将它绑定到GridView,如下所示:
gridView.DataSource = dt;
gridView.DataBind();
但我希望GridView首先显示“b”(最左边)。
重点:我正在使用它导出到Excel,并且没有实际输出到屏幕,使用:
HtmlTextWriter htw = new HtmlTextWriter(sw);
gridView.RenderControl(htw);
谢谢!
答案 0 :(得分: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很酷,不是吗?)
答案 1 :(得分:1)
这经常出现在面试问题中。您正在将表的内容转储到excel文件,这很好,并且您在xl中使用html,这很好。但是 - 您正在获取数据库表的内容并将其放入内存(DataTable)。随着这些数据的增加,它可能会在服务器上使用越来越多的内存,特别是如果有这个报告的并发请求!!
修复:改为使用DataReader并手动填充GridView(这解决了您发布的问题) - 或者更好地使用Simple OOXML之类的东西,并将数据直接写入.xlsx电子表格的xml表示