C #: изменение порядка столбцов при привязке DataTable к GridView - PullRequest
4 голосов
/ 31 марта 2010

Как можно изменить отображаемый порядок столбцов в DataTable?

Например, dataTable "dt" содержит два столбца "a" и "b". Я связываю его с GridView следующим образом:

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

Но я бы хотел, чтобы GridView отображал «b» первым (крайним слева).

Важный момент: я использую это для экспорта в Excel, и нет фактического вывода на экран, используя:

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

Спасибо!

Ответы [ 2 ]

5 голосов
/ 31 марта 2010

да, вы можете сделать это в передней части. Что-то вроде этого:

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

EDIT:

Нет внешнего интерфейса, говорите? Это круто - мне нравится вызов:

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

(Здорово предположить, что C # 3 в наши дни не так ли?)

1 голос
/ 31 марта 2010

Это часто встречается в интервью. Вы выгружаете содержимое таблицы в файл Excel, и это нормально, и вы используете html в xl, что нормально. НО - вы берете содержимое таблицы базы данных и помещаете ее в память (DataTable). С течением времени, когда эти данные растут, они могут использовать все больше и больше памяти на сервере, особенно если есть параллельные запросы для этого отчета !!

Исправлено: вместо этого используйте DataReader и вручную заполните GridView (это решит проблему, о которой вы публиковали) - или, что еще лучше, используйте что-то вроде Simple OOXML и запишите данные непосредственно в представление XML для электронная таблица .xlsx.

...