2014-06-11 4 views
1

В некоторых случаях (я считаю, что когда используется внутреннее соединение) datagridview неправильно отражает порядок столбцов, заполненный SQL-запросом.Отключить автоматическое заказы datagridview VB.NET

Например, я запрашиваю столбцы таблицы в следующем порядке:

Select Booking_ID, Client_Name, Room_ID 

Хотя SQL столбцов возвращаемых в правильном порядке, однако DataGridView отображает столбцы автоматически в другом порядке:

Room_ID || Booking_ID || Client_Name 

Вопрос заключается в , как отключить этот автоматический горизонтальный порядок столбцов, поэтому datagridview отображает таблицу точно так, как это делает SQL?

Я использую метод datasource, чтобы заполнить datagrid.

SQLDA = New SqlDataAdapter(SqlCmd) 
SQLDataset = New DataSet 
SQLDA.Fill(SQLDataset) 
Form2.DGVData.DataSource = SQLDataset.Tables(0) 

В большинстве случаев этой проблемы нет, а datagridview показывает таблицу точно так же, как это делает SQL.

Заранее спасибо.

PS: Я бы опубликовал изображения, но мне не разрешено, так как требуется 10 рек.

+0

Как вопрос не ясно .... Как вы заполнение DataGridView? также покажите код. Если вы используете метод источника данных для заполнения, тогда попробуйте использовать 'order by' в' query', i.e 'Select Booking_ID, Client_Name, Room_ID из вашего Table order by Client_Name' –

+0

Да Я использую метод источника данных. 'SQLDA = Новый SqlDataAdapter (Sqlcmd) SQLDataSet = New DataSet SQLDA.Fill (SQLDataSet) Form2.DGVData.DataSource = SQLDataset.Tables (0)' – user3707554

+0

показать код, чтобы заполнить DataGridView редактировать свой вопрос –

ответ

1

Простой, но должно работать:

dgvDataGridView.Columns("Booking_ID").DisplayIndex = 0 
dgvDataGridView.Columns("Client_Name").DisplayIndex = 1 
dgvDataGridView.Columns("Room_ID").DisplayIndex = 2 
'... 
+0

Хотя это решение работает - это ручной декларативный процесс, было бы лучше заставить datagridview не выполнить это неприятное поведение в первую очередь. – Ken

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