2013-07-29 38 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计划缓存。