Skip to main content

GridView Sort (排序)

GridView本身有一个Sort()函数:public virtual void Sort (
    string sortExpression,    SortDirection sortDirection)
使用上相当方便。

但在实际使用中,常用的是点击每一列的标题来排序,点击标题会触发:protected void GridView_Sorting(object sender, GridViewSortEventArgs e)事件。从GridViewSortEventArgs中可以拿到SortDirectionSortExpression。但是GridView.Sort()本身也会触发GridView_Sorting(),如果在GridView_Sorting()中调用GridView.Sort()会无限的循环,直到堆栈溢出。

这样就只能使用DataView.Sort属性来排序,再Bind到GridView上。

示例:protected string m_sortDirection
{
  get
  {
    if (ViewState["m_SortDirection"] == null)
  {
    return String.Empty;
  }
  return (string)ViewState["m_SortDirection"];
  }
    set { ViewState["m_SortDirection"] = value; }
}

protected string m_sortExpression
{
  get { return (string)ViewState["m_SortExpression"]; }
  set { ViewState["m_SortExpression"] = value; }
}

protected void bindData(string sortExpression, string sortDirection)
{
  DataView dv = new DataView(ds.Tables[0]);
  dv.Sort = sortExpression;
  if (sortDirection != String.Empty)
  {
    dv.Sort += " " + sortDirection;
 }

  gvRequisition.DataSource = dv;
  gvRequisition.DataBind();
}

protected void GridView_Sorting(object sender, GridViewSortEventArgs e)
{
  m_sortExpression = e.SortExpression;
  if (m_sortDirection == "ASC")
  {
    m_sortDirection = "DESC";
  }

  else if (m_sortDirection == "DESC")
  {
    m_sortDirection = "ASC";
  }
  bindData(m_sortExpression, m_sortDirection);
}

Comments

Anonymous said…
请问你有没有使用过Gridview.Sort()方法。QQ:390655561
cocoa said…
ds 是什么东西?
將王車 said…
to 祖元:
ds应该是个DataSet。这段代码是从实际项目中复制出来的,可能删除的时候误删了。

to Anonymous:
没有用过Gridview.Sort(),如果你让另一时间来触发Gridview.Sort()应该不会有什么问题。

Popular posts from this blog

asp.net Single Sign-On(SSO) from SAP

公司的主系统是SAP的东西,有的时候老板想要一些小的新功能或是某个部门需要一个自己使用的小系统又不想买SAP的东西(贵啊),只有自己写和使用一些第三方免费或是开源的系统,这个时候就难免涉及到 Single Sign-On 。而在asp.net 2.0下是非常容易实现的。有SAP提供的“Sapsecu.dll”,“sapssoext.dll”2个dll再加上由公司SAP系统提供的"verify.pse"就足够了。 第一步 复制Sapsecu.dll到system32目录,并使用Rersrv32注册。 第二步 在项目里添加对sapssoext.dll的引用,vs2005会自动生成Interop.SAPSSOEXT.dll来让.net使用。 第三步 在你项目的根目录创建sap目录,并将SAP系统那边提供的verify.pse复制过去。位置倒到不是一定要在这里,只要你找得到就好。 第四步 在SAP系统那边,需要生成一个类似:http://yourserver/login.aspx?sso=werwerwerwe的链接,当然具体的页面需要你和那边的管理员商量来决定。这个链接是有时效性的,我在做测试的时候他们给的测试链接通常只能用一天。现在我们要做到就是我们这边的编码,在login.aspx的page_load里面实现: protected void Page_Load(object sender, EventArgs e) {   string sso= Request.QueryString["sso"];   SAPSSOEXT.SSO2Ticket objSSO = new SAPSSOEXT.SSO2Ticket();   objSSO.CryptLib = "sapsecu.dll";   string strKeypath = Server.MapPath("~/sap/verify.pse");    //放在根目录比较容易找   object tt;   tt = objSSO.EvalLogonTicket(strTicket, strKeypath, String.Empty); ...

广电总局的口味

以下是对近年来广电总局各种禁令的详细统计. 1.2002年,全民热捧《流星花园》的时候,广电总局下令停播,让很多播了一部分和买了没有播的电视台损失惨重. 2.2004年,广电总局规定不得在黄金时段(19:00-22:00)播出境外影视剧. 3.2004年,广电总局规定黄金时间不得播放“凶杀暴力涉案剧”、禁止网络游戏类节目播出、“红色经典”不许戏说. 4.2005年9月,广电总局发布《广电总局关于禁止以栏目形式播出境外动画片的紧急通知》. 5.2006年3月,广电总局规定跨省赛事参赛选手年龄必须年满18岁,这给了“超女”等选秀节目当头一棒. 6.2006年3月,广电总局颁布政策:主持人须通过道德考核上岗. 7.2006年3月,广电总局要求停播地方方言译制的境外广播电视节目,说方言的《猫和老鼠》等只能通过碟市求生. 8.2006年4月,广电总局规定《超级女声》主持人不得有倾向性、要张扬主旋律等. 9.2006年8月,广电总局下令9月1日起各级电视台黄金时间不得播出境外动画片. 10.2006年9月,禁止视频断片在网络上随意传播,必须取得许可证. 11.2007年1月,规定卫视黄金档只能播放主旋律影视作品 下面有人回帖: 由 站点访客 于 Wednesday, 03月21日 @ 17:15:35 CST 从这些可以看出: 光电的只喜欢亚洲的 不喜欢欧美的 不喜欢重口味 不喜欢幼女 不得倾向性就是指标准制服 张扬主旋律指的是姿势不能过于大胆. 来源: cnbeta