Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }