2013-07-29 35 views
1

我想在Gridview中以降序顯示日期作爲默認值。排序日期從高到低

DataTable dt = new DataTable(); 
SqlDataAdapter adp = 
    new SqlDataAdapter("SELECT Customer.CustomerID, Customer.lastname, Customer.firstname, 
           Ticket.Date, Ticket.Store, Ticket.Amount, Ticket.NoStub " + 
         "FROM Customer INNER JOIN Ticket ON Customer.CustomerID = Ticket.CustomerID 
         WHERE Customer.CustomerID like " + txtCustomerID.Text, cn); 
adp.Fill(dt); 
gvHistory.DataSource = dt; 

回答

2

只需添加:

order by Ticket.Date desc 

到SQL語句的末尾,如下所示:

DataTable dt = new DataTable(); 
     SqlDataAdapter adp = new SqlDataAdapter("SELECT Customer.CustomerID,    Customer.lastname, Customer.firstname, Ticket.Date, Ticket.Store, Ticket.Amount, Ticket.NoStub " + 
               "FROM Customer INNER JOIN Ticket ON Customer.CustomerID = Ticket.CustomerID WHERE Customer.CustomerID like " + txtCustomerID.Text + " order by Ticket.Date desc", cn); 
     adp.Fill(dt); 
     gvHistory.DataSource = dt; 
1

由於@Adels回答你可以通過改變你的SQL語句順序,如果你想通過代碼來完成它。嘗試DataGridView.Sort方法如下

gvHistory.Sort(gvHistory.Columns["ColumnName"], ListSortDirection.Descending); 
0
System.Data.DataTable dt = new System.Data.DataTable(); 
System.Data.SqlClient.SqlDataAdapter adp = new System.Data.SqlClient.SqlDataAdapter(
         "SELECT Customer.CustomerID, 
           Customer.lastname, 
           Customer.firstname, 
           Ticket.Date, 
           Ticket.Store, 
           Ticket.Amount, 
           Ticket.NoStub " + 
         "FROM Customer INNER JOIN Ticket ON 
           Customer.CustomerID = Ticket.CustomerID WHERE   
           Customer.CustomerID like " + txtCustomerID.Text + " 
           order by Ticket.Date desc", cn); 
adp.Fill(dt); 
gvHistory.DataSource = dt; 
1
  1. 我建議使用在數據網格的排序功能,Damith推薦
  2. 不要直接放進用戶參數到SQL語句。您必須使用WHERE Customer.CustomerID like @customerId,然後向該命令添加一個參數,其中包含name = @customerId and value = txtCustomerID.Text。這1)防止用戶輸入破壞數據庫,2)防止膨脹SQL計劃緩存。