Exemple #1
0
        /// <summary>
        /// 对 DX GridView 的扩展:为传入的 Q 加载 OrderBy ThenBy OrderDescendingBy ...
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="gv"></param>
        /// <param name="q"></param>
        /// <returns></returns>
        public static IQueryable <T> ApplySorts <T>(this ASPxGridView gv, IQueryable <T> q,
                                                    bool processGroup = false, bool groupAsc = true)
        {
            var columns  = gv.GetSortedColumns();
            var gColumns = gv.GetGroupedColumns();
            List <KeyValuePair <string, bool> > sorts = new List <KeyValuePair <string, bool> >();

            foreach (var c in columns.OrderBy(cc => cc.SortIndex))
            {
                var asc = true;
                if (c.SortOrder == DevExpress.Data.ColumnSortOrder.Descending)
                {
                    asc = false;
                }
                var gC = gColumns.SingleOrDefault(cc => cc.FieldName == c.FieldName);
                if (processGroup)
                {
                    if (gC != null)
                    {
                        asc = groupAsc;
                    }
                }
                else
                {
                    if (gC != null)
                    {
                        continue;
                    }
                }
                sorts.Add(new KeyValuePair <string, bool>(c.FieldName, asc));
            }

            return(Exp.AppendSorts <T>(q, sorts.ToArray()));
        }