2016-05-12 116 views
0

我有一個gridview與以下列。基於特定列值的gridview排序

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

你能告訴做作的代碼數據源到你的GridView? –

+0

使用(的OracleCommand CMD =新的OracleCommand( 「選擇實例中ServerName,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

Is Status是一個實際的字符串「Red」還是「Green」?如果這樣做是一個壞習慣進入。不要複製含義,「狀態代碼」與「狀態描述」不同。狀態碼可以按照一定的優先級排序。將字符串排序爲狀態碼或使用恰好按正確順序排序的字符串是錯誤的形式。 – 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