2013-04-08 2 views
1

В моей программе (asp.net, C#) я использую gridview для отображения данных. получает данные из следующего запроса.Как сохранить заказ в Gridview

select * from Nametable where NameID in (4,3,1,22,15,8,9,5,7) 

Но проблема Gridview показывает данные в восходящем порядке сортировки NameID как (1,3,4,5,7,8,9,15,22). Я не хочу данные для сортировки, он должен показать именно так, как я уже упоминал в запросе, как (4,3,1,22,15,8,9,5,7)

Вот мой код

private void loadGridView() 
{ 
    Query = "select * from Nametable where NameID in (4,3,1,22,15,8,9,5,7)" 

     DataSet ds = SqlHelper.ExecuteDataset(CommonSettings.Constring, CommandType.Text, Query); 
     GridView1.DataSource = ds; 
     GridView1.DataBind(); 
} 

ответ

5

Это будет довольно трудно сделать с кодом, который - сказал он. Это не имеет никакого отношения к вашему GridView, так как данные возвращаются из SQL. SQL просто не закажет вам результаты таким образом. Вы должны были бы явно указать CASE в ORDER BY, как это:

Query = "select * from Nametable where NameID in (4,3,1,22,15,8,9,5,7) " + 
     "order by case NameID when 4 then 0 " + 
          "when 3 then 1 " + 
          "when 1 then 2 " + 
          "when 22 then 3 " + 
          "when 15 then 4 " + 
          "when 8 then 5 " + 
          "when 9 then 6 " + 
          "when 5 then 7 " + 
          "when 7 then 8 end"; 

Очевидно, что это очень громоздким. Я настоятельно рекомендую вам попробовать сортировку по столбцу.

+0

Вы правы. Это не проблема с Gridview. Его SQL-сервер сортирует его. Ваше предложение использовать case case не работает для меня, поскольку заказ является динамическим. Спасибо – Henry

0

Datagridview имеет свойство сортировки для своих столбцов. Вероятно, сортировка включена для столбца ID. Проверьте свойства datagridview, чтобы отключить сортировку или отключить его программно

+0

Это ASP.NET не Winforms. Тем не менее, 'SortExpression' в столбце GridView не сортируется автоматически, а когда пользователь нажимает на заголовок этого столбца. –

0

Вы можете создать временную таблицу как часть вашего запроса с помощью столбцов (NameId, SortOrder), присоединиться к ней и заказать набор результатов SortOrder - - это достигнет того, что вы хотите сделать, - но это своего рода хоккей.

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