2010-03-31 4 views
4

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

Например, dataTable "dt" содержит две колонки "a" и "b". Я привязать его к GridView, как это:

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

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

Важный момент: Я использую это для экспорта в 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> 

EDIT:

Нет передний конец вы говорите? Это круто - мне нравится вызов:

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

(Это круто предположить C# 3 в эти дни, не так ли?)

+0

Спасибо, я забыл сказать, что я не выводю на экран, а в файл excel, поэтому на самом деле у меня нет передней части, где я могу это изменить. – Nir

+0

Человек, вы решили много проблем с этим решением, у вас нет подсказки. Большое спасибо ++ – Nir

+0

Если бы вы работали на меня, у вас были бы проблемы! –

1

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

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

Смежные вопросы