2016-05-12 119 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