2011-11-23 55 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变量,你可以在整个应用程序中使用它。

希望这会有所帮助!

相关问题