2016-05-12 3 views
0

У меня есть сетка со следующими столбцами.сортировка сетки в зависимости от конкретных значений столбца

enter image description here

Я хочу, чтобы отсортировать GridView на основе статуса. Красный статус должен быть первым (вверх), а затем зеленым.

Пожалуйста, предложите, как я могу это сделать?

Это мой код:

Using (OracleCommand cmd = new OracleCommand("SELECT Instance,ServerName,IPFQDN,Status from server_interspc")) 
{ 
    using (OracleDataAdapter sda = new OracleDataAdapter()) 
    { 
     cmd.Connection = con; 
     sda.SelectCommand = cmd; 
     using (DataTable dt = new DataTable()) 
     { 
      sda.Fill(dt); 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
     } 
    } 
} 
+0

Можете ли вы показать код аффектации datatsource для вашего GridView? –

+0

используя (OracleCommand CMD = новый OracleCommand ("SELECT экземпляр, ИмяСервер, IPFQDN, Статус от server_interspc")) { использования (OracleDataAdapter SDA = нового OracleDataAdapter()) { cmd.Connection = Con; sda.SelectCommand = cmd; с использованием (DataTable dt = new DataTable()) { sda.Fill (dt); GridView1.DataSource = dt; GridView1.DataBind(); } } } – SJD

+0

Состояние - настоящая строка «Красный» или «Зеленый»? Если это так, то это плохая привычка. Не дублируйте значение, «Код состояния» не совпадает с «Описание состояния». Код состояния сортируется по определенному уровню приоритета. Сортировка строк в виде кода состояния или использование строк, которые просто происходят в порядке приоритета, является плохим. – fnostro

ответ

0

Я предлагаю изменить вам код:

sda.Fill(dt); 
    DataView dv = dt.DefaultView; 
    //Sorting datatable as you like before set it as datasource of your gridView 
    dv.Sort = "Status desc"; // Or  dv.Sort = "Status asc"; 
    DataTable sortedDT = dv.ToTable(); 
    GridView1.DataSource = sortedDT; 
0

Просто измените ваш запрос

SELECT Instance,ServerName,IPFQDN,Status from server_interspc GROUP BY Status ORDER BY Status desc