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

欠税了!!!!

上个礼拜,收到政府发来的信,大概知道是和缴税有关的,由于本人英文不好,而且我们缴税的方面一向是由公司负责的,以为是普通的通知。因为同事收到的信都和我的不一样,还是决定带给老大看看是什么东西。结果把老大吓了一跳,红的,居然是红的(我怎么看都只有一点淡淡的红色。)。这意味着我欠税了。在这个资本主义国家,最恐怖的事情莫过去欠税了!!!我的工作准证很可能被吊销。 下午立马跑回公司找人事部的。我居然公司成立几十年来第一个红单。。。人事部的人说还好公司一贯信誉良好,他们会和那边联系,让我先放心。 我倒是很放心,一点都不急。其实我想回家了,和女朋友的关系这几天又到了谷底,想回去了,虽然房子钱还没有着落。

ipod touch

昨天晚上买了iPod Touch 8G S$388,晚上手机没法照,上一张官网的图: 拿在手里的感觉很不错,超薄。终于可以用上传说中的多重触控了。音质?汗,我素木耳。 昨晚太赶,忘了贴膜,配套的套子也没有。今天再去森林看看。这些杂物好贵啊啊啊。