/// <summary> /// 获得排序字符串。 /// </summary> /// <param name="grid">GridView 对象。</param> /// <param name="sortExpression">要排序的字段名称。e.SortExpression 属性值。</param> /// <param name="bindType"></param> /// <returns>返回拼装好的排序字符串。</returns> public static string GetSortExpression(GridView grid, string sortExpression, BindPagingGridViewType bindType) { string m_sortExpression = "SortExpression"; // strTemp 不为空表示上次排序就是按照这个字段排序的。 string strTemp = grid.Attributes[m_sortExpression]; if (string.IsNullOrEmpty(strTemp)) { strTemp = string.Empty; } switch (bindType) { case BindPagingGridViewType.Sorting: if (string.Compare(strTemp, sortExpression, true) == 0 || strTemp.ToLower().IndexOf(sortExpression) > -1) { // 相同一列点击第二次。 if (strTemp.ToLower().IndexOf("desc") > -1) { sortExpression = strTemp.ToLower().Replace(" desc", string.Empty); } else { sortExpression = string.Format("{0} desc", sortExpression); } } break; case BindPagingGridViewType.Paging: if (!string.IsNullOrEmpty(strTemp)) { sortExpression = strTemp; } break; case BindPagingGridViewType.Searching: break; } grid.Attributes[m_sortExpression] = sortExpression; return(sortExpression); }
/// <summary> /// 绑定 GridView 数据,并且导向到指定页码。 /// </summary> /// <param name="grid">GridView 控件。</param> /// <param name="dv">DataView 数据源。</param> /// <param name="pageIndex">默认指定页码。</param> /// <param name="sortExpression">排序字段。</param> /// <param name="supportSortViewState">是否支持记录上一次排序表达式。(第一次正序,第二次倒序。)</param> /// <param name="bindType">枚举类型参数,指定此次调用是翻页调用还是排序调用。</param> /// <returns></returns> /// <remarks>如果支持记录上次排序表达式,当指定调用方式为排序掉用是,就支持了表头双击了。如果指定调用方式翻页调用则翻页时能够保持排序。</remarks> public static bool BindPagingGridView(GridView grid, DataView dv, int pageIndex, string sortExpression, bool supportSortViewState, BindPagingGridViewType bindType) { if (grid == null) { return(false); } bool blnRet = false; try { if (grid.AllowPaging) { if (dv.Count > 0) { grid.PageIndex = Math.Min(pageIndex, (int)Math.Ceiling(dv.Count / (double)grid.PageSize) - 1); } else { grid.PageIndex = 0; } } if (pageIndex < 0) { pageIndex = 0; } if (supportSortViewState) { dv.Sort = GetSortExpression(grid, sortExpression, bindType); } else if (!string.IsNullOrEmpty(sortExpression)) { dv.Sort = sortExpression; } grid.DataSource = dv; grid.DataBind(); blnRet = true; } catch (Exception ex) { throw ex; } return(blnRet); }