2011-11-23 58 views
1

我的應用程序中有一個gridview。 單擊一個按鈕時,同一列的相同網格也會加載到另一個頁面中。 現在我想要做的是如果用戶已經在1sr頁面上對一些列進行了網格排序,那麼在另一個頁面上點擊按鈕時加載的網格也應該與用戶在前一頁面上選擇的同一列進行排序。 我該如何做到這一點。在上一頁排序的另一頁上對GridView進行排序

在這方面的任何幫助,將不勝感激... :)

回答

0

作爲一個大致的輪廓你可以 -

  • 值寫入一個隱藏字段,當第一網格 的排序PARAM被改變
  • 移動到第二頁時拿起參數並將其追加到 查詢字符串
  • 在第二頁retreive參數形成querysting和 對網格進行相應排序
1

我相信你可以使用會話變量來存儲排序方向。所以,當你加載GridView的時候,你需要使用會話變量來正確分類。

應該與此類似:

private string getSortDirectionString() 
    { 
     if (Session["sortDirection"] == null) 
     { 
      Session["sortDirection"] = "ASC"; 
     } 
     else 
     { 
      if (Session["sortDirection"].ToString() == "ASC") 
      { 
       Session["sortDirection"] = "DESC"; 
       return Session["sortDirection"].ToString(); 
      } 
      if (Session["sortDirection"].ToString() == "DESC") 
      { 
       Session["sortDirection"] = "ASC"; 
       return Session["sortDirection"].ToString(); 
      } 
     } 
     return Session["sortDirection"].ToString(); 
    } 

而且這是你應該如何整理你的GridView:

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) 
    { 
     listBind(); //procedure to populate your GridView 
     DataSet dsSortTable = GridView1.DataSource as DataSet; 
     DataTable dtSortTable = dsSortTable.Tables[0]; 
     if (dtSortTable != null) 
     { 
      DataView dvSortedView = new DataView(dtSortTable); 
      dvSortedView.Sort = e.SortExpression + " " + getSortDirectionString(); 
      Session["sortExpression"] = e.SortExpression; 
      GridView1.DataSource = dvSortedView; 
      GridView1.DataBind(); 
     } 
    } 

這樣你永遠都存儲在會話中的SortExpression變量,你可以在整個應用程序中使用它。

希望這會有所幫助!

相關問題