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

PSP 三国无双 大蛇传 人物图片

PSP三国无双 大蛇传 人物图片(Google Picasa相册) 现在还不全,太多了。。。(2008-03-23) 搞完了,体力活啊。(2008-04-20) 暂时放弃吧,那个空间到期很久了,忘了更新这里了。什么时候找到地方放再跟新。(2009-04-29) 上传到Google Picasa(2009-09-25)

使用Google Chrome开发版或是beta版

Google的Chrome是个非常不错的浏览器,界面简洁,javascript执行速度非常快(完全体会不到,对我来说瓶颈是网速,相对常用firefox来说js速度方面到没什么很明显的提升),但是功能还是有限。一般常用的都是稳定版,但是为了体验最新的进步不少人也有安装beta版的,为了体验最新最新的改变还以安装开发版的(相比beta可能更不稳定,bug更多)。现在有了 Google Chrome Channel Changer , 就可以随时在3个版本之间换来换去。 选好版本,点击“Update”就可以关闭这个Channel Changer了。然后再去你的chrome中选择“About Google Chrome”,就会自动的检查下载安装新版本。提示安装完成后重启一下chrome就行了。 用了1个月左右的chrome,还是换回firefox,最小字体是个问题,字体平滑也完全没用,看惯雅黑,点阵字体完全看不惯哦。

一点感想

久久没来,最近在家google基本无法使用了,无奈用自由门翻墙而出,看到自己以前所发的东西,感慨良多。想起硬盘上魔兽截图无数,说不定哪天出个意外,不如发帖留恋。