将另一页上的GridView排序为在前一页上排序

本文关键字:排序 一页 GridView | 更新日期: 2023-09-27 18:15:33

我有一个gridview在我的应用程序。单击按钮时,具有相同列的相同网格也会加载到另一个页面中。现在我想做的是,如果用户已经排序的网格与一些列在1sr页面上,网格在另一个页面上加载的点击按钮也应该排序与相同的列,用户已选择在上一页。我怎样才能做到这一点?

在这方面的任何帮助都将是非常感激的。:)

将另一页上的GridView排序为在前一页上排序

我相信您可以使用会话变量来存储排序方向。所以,当你加载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就一直存储在会话变量中,你可以在整个应用程序中使用它。

希望这对你有帮助!

作为一个粗略的轮廓,你可以-

  • 当第一个网格的排序参数时,将值写入隐藏字段改变
  • 移动到第二页时选择该参数并将其追加到参数
  • 在第二页上从查询和中检索参数对网格进行排序