这几天一直在自测项目,发现一些细节问题,这里再记录一个GridView排序状态的问题。其实算不上问题,只是我自己以前没注意过这种情况,还是经验少。

  GridView的Sorting方法在你点击某个Column的时候触发,而如果GridView支持分页,选择分页或者调整分页大小后,GridView会重新Bind,此时会变成默认的排序,不再是之前选中的某个栏位的排序规则。这里其实已经可以看出来了,就是GridView重新绑定的时候,没有获取到当前的排序规则,解决办法也很直观,就是把之前的排序规则保存起来,每次GridView执行Bind的时候,都加上排序规则。

  上代码:

View Code

  #region GridView的排序///<summary>/// GridView的排序///</summary>///<param name="sender"></param>///<param name="e"></param>        protected void gdvFiles_Sorting(object sender, GridViewSortEventArgs e)        {try            {//如果已经存了SortDirection,则已经有过排序                if (ViewState["SortExpression"] != null && ViewState["SortDirection"] != null)                {                    DataPickerEvent.GridViewSorting(this.GetViewStateData<DataTable>("SourceTable" + DocTypeID), gdvFiles, e, GetViewStateData<string>("SortExpression"), GetViewStateData<string>("SortDirection"));                }else                {                    DataPickerEvent.GridViewSorting(this.GetViewStateData<DataTable>("SourceTable" + DocTypeID), gdvFiles, e);                }                SetViewStateData("SortDirection", gdvFiles.Attributes["SortDirection"]);                SetViewStateData("SortExpression", gdvFiles.Attributes["SortExpression"]);            }catch (Exception ex)            {string message = String.Format("SourceFrom gdvFiles_Sorting Error:" + ex.Message);            }        }#endregion

  这个是GridView的Sorting方法,再看一下BindGridView的方法,就知道了:

View Code

    #region BindGridView///<summary>/// 绑定GridView///<param name="avaliable">是否显示UnAvaliable的记录</param>///</summary>        private void BindGridView(bool avaliable)        {//获取维度信息            List<DocAttributeEntity> attributeList = GetViewStateData<List<DocAttributeEntity>>("AttributeList" + DocTypeID);if (ViewState["SourceTable" + DocTypeID]!=null)            {                DynamicShow_gdvFiles(attributeList);                DataTable dataSource = GetViewStateData<DataTable>("SourceTable" + DocTypeID);

                DataTable tableSource = dataSource.Clone();if (!avaliable)                {                    DataRow[] drs = dataSource.Select("File_Status='" + EnumDataHelper.GetEnumString<FileStatus>(FileStatus.Available) + "'");

foreach (DataRow dr in drs)                    {                        tableSource.ImportRow(dr);                    }

if (tableSource.Rows.Count > 0)                    {                        DataView dv = tableSource.DefaultView;if (ViewState["SortExpression"] != null && ViewState["SortDirection"] != null)                        {string strSortExpression = ViewState["SortExpression"].ToString();string strSortDirection = ViewState["SortDirection"].ToString();                            dv.Sort = strSortExpression + "" + strSortDirection;                        }

this.gdvFiles.DataSource = dv;this.gdvFiles.DataBind();this.gdvFiles.Visible = true;this.divNoSearchResult.Visible = false;                    }else                    {this.gdvFiles.Visible = false;this.divNoSearchResult.Visible = true;                    }                }else                {

if (dataSource.Rows.Count > 0)                    {                        DataView dv = tableSource.DefaultView;                        if (ViewState["SortExpression"] != null && ViewState["SortDirection"] != null)                        {                            string strSortExpression = ViewState["SortExpression"].ToString();                            string strSortDirection = ViewState["SortDirection"].ToString();                            dv.Sort = strSortExpression + " " + strSortDirection;                        }

 this.gdvFiles.DataSource = dv;

                          this.gdvFiles.DataBind();this.gdvFiles.Visible = true;this.divNoSearchResult.Visible = false;                    }else                    {this.gdvFiles.Visible = false;this.divNoSearchResult.Visible = true;                    }                }            }        }#endregion 

转载于:https://www.cnblogs.com/liver.wang/archive/2011/10/26/GridView.html

GridView排序状态保持相关推荐

  1. 扩展GridView控件(2) - 复合排序和排序状态提示

    GridView既强大又好用.为了让它更强大.更好用,我们来写一个继承自GridView的控件. [索引页] [源码下载] 扩展GridView控件(2) - 复合排序和排序状态提示 作者:webab ...

  2. gridview排序加箭头(二)

    用gridview排序的时候,在.NET里是不能被标注的,下面提供如下方法:主要是显示的时候进行了下判断,然后进行不同的排序,这样就给这个gridview加上了排序的箭头,有意思的是<font ...

  3. asp.net中GridView排序的手动实现

    GridView自带了数据排序功能.在设计视图下,只能对GridView的排序数据列和排序方向进行静态设置.如果要自己实现排序功能,在后台程序中,则需要用Attributes方式对GridView的这 ...

  4. C语言已排序链表插入新节点保持排序状态(附完整源码)

    C语言已排序链表插入新节点保持排序状态 C语言已排序链表插入新节点保持排序状态完整源码(定义,实现,main函数测试) C语言已排序链表插入新节点保持排序状态完整源码(定义,实现,main函数测试) ...

  5. [转]无刷新的ASP.NET AJAX GRIDVIEW排序

    有幸看到一个无刷新的AJAX GRIDVIEW排序效果,感觉不错,代码也简单,方便!特奉上来给各位博友参考! 下载源码 本文来源:http://www.cnblogs.com/witer666/arc ...

  6. GRIDVIEW排序 动态实现和静态实现

    用了GRIDVIEW一段时间,发现很多人都在问GRIDVIEW的排序功能,有些朋友在我的QQ群(13536330)里面问我,我觉得有三种方法可以实现,但本文我只讲两种,相信可以满足大家的需要了吧. 1 ...

  7. GridView选中状态

    GridView可以设置选中状态:setselector(),在触摸的时候,该项item会显示该背景. 但是遇到一个需求要用遥控器控制选中状态,直接setSelection(position);却不行 ...

  8. ASP.NET 2.0中GRIDVIEW排序

    在 headertemplate中加一张UP.GIF和DOWN.GIF(就是升序,倒序的示意图) %@ Page Language="C#" %> <!DOCTYPE ...

  9. JQuery EasyUI Datagrid 清空排序状态(箭头)代码

    使用DataGrid排序 结果发现一个不小的问题 $('#mydatagrid').datagrid('options').sortName = ""$('#mydatagrid' ...

  10. GridView排序404以及SortExpression字符长度限制

    今天在做一个统计页面时,因为子查询等某些原因,在进行排序操作时,不能给SortExpression直接复制列名,而是赋值子查询语句,结果在测试时,点击部分列,会直接报错404,debug调试时也不会走 ...

最新文章

  1. 说说标准服务器架构(WWW+Image/CSS/JS+File+DB)
  2. 【转载】在对话框中加入属性页
  3. Linux学习 Unit 4
  4. Lync Server 2010标准版系列PART6:启用Lync
  5. 【Java进阶营】Java多线程基础学习(一)
  6. WPF 学习笔记 路由事件
  7. Java 基础系列:不变性
  8. ElasticSearch索引的基本操作命令
  9. [LeetCode系列] 跳跃问题II
  10. ios学习:UIToolBar的单独使用
  11. B2B的用户画像怎么做?
  12. 微信wxp协议 服务器设置,微信支付
  13. jQuery实现多选框的全选与反选
  14. 微信 3.6.0 正式版来了,上班族狂喜!
  15. 【转】Swagger详解(SpringBoot+Swagger集成)
  16. R语言ggplot2可视化、在一张图中画出两条曲线(two lines in same ggplot2 graph)、使用pdf函数将ggplot2可视化图像保存到指定目录的pdf格式文件中
  17. 总结软连接与硬连接的区别
  18. 棋盘问题 51Nod - 1605
  19. 解读Git与SVN的区别(集中式VS分布式)
  20. 2-单选题精选_2009博客-精选专辑

热门文章

  1. linux攻防比赛_浅谈网络攻防大赛中的Linux服务器的加固
  2. html5简单网页设计作品,30个以简约为主的网页设计作品
  3. AutoJs学习-Auto趣头条文章阅读
  4. 《基于机器视觉的高压输电线路覆冰厚度检测》论文笔记
  5. 如何封装axios?axios 的简单封装
  6. ZigBee-CC2530单片机 - 实现外部电压值的测量
  7. 【已解决】在Angular 中使用思源黑体
  8. ESP8266与阿里云传数据
  9. Unity实战篇 | 游戏中控制 地图无限自动化生成 的方法,进一步优化项目
  10. 嵌入式C编程中的设计模式之二——状态机模式