【问题标题】:Sorting works only once排序只工作一次
【发布时间】:2016-06-04 02:26:39
【问题描述】:

我有带有排序功能的 GridView,它工作得很好,但它只能工作一次,是的,这不是重复的,我发现了很多问题,但这对我没有帮助。请问它只排序一次有什么问题(就像方向没有改变)?

        ViewState["sort"] = "ASC" --> is declared in PageLoad

        protected void grid_sort(object sender, GridViewSortEventArgs e) 
        {
            DataView sorting = new DataView(data); //data is global DataTable

            if (ViewState["sort"].ToString() == "ASC")
                ViewState["sort"] = "DESC";
            else
                ViewState["sort"] = "ASC";

            sorting.Sort = e.SortExpression + " " + ViewState["sort"];
            data = sorting.ToTable();
            GridView1.DataSource = data;
            GridView1.DataBind();
        }

【问题讨论】:

标签: c# asp.net sorting gridview


【解决方案1】:

所有对象都在页面生命周期结束时被释放,因此当它呈现为 HTML 并发送到客户端时。所以不能用string direction = "ASC"这个字段来存储排序方向。这将在每次回发时初始化为 "ASC"

相反,您必须使用不同的方式,例如:

  • 会话
  • 视图状态
  • 隐藏字段

ASP.NET State Management Overview

【讨论】:

  • 我更新了我的帖子,但它不起作用,第二次点击没有任何反应
  • @tomsk:您已经更新了您的问题,但不清楚您现在使用什么代码。 PageLoad 中声明了什么?
  • 我在 PageLoad 中添加了这个:ViewState["sort"] = "ASC";
  • @tomsk: 然后改成if(!IsPostBack)ViewState["sort"] = "ASC";
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 2018-06-22
  • 2015-09-18
  • 2013-12-31
  • 1970-01-01
  • 2013-09-28
相关资源
最近更新 更多