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

时间:2010-03-31 11:41:59

标签: c# asp.net asp.net-3.5

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

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

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

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

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

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

谢谢!

2 个答案:

答案 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表示