示例#1
0
        public async Task ChangeExtSorting(ColumnOrderValue column)
        {
            var newColumnOrderValue = new ColumnOrderValue {
                ColumnName = column.ColumnName,
                Direction  = column.Direction == GridSortDirection.Ascending ? GridSortDirection.Descending
                    : GridSortDirection.Ascending,
                Id = column.Id
            };

            Grid.ChangeQueryString(ColumnOrderValue.DefaultSortingQueryParameter, column.ToString(),
                                   newColumnOrderValue.ToString());
            await UpdateGrid();
        }
        public QueryStringSortSettings(IQueryDictionary <StringValues> query)
        {
            if (query == null)
            {
                throw new ArgumentException("No http context here!");
            }
            Query = query;
            ColumnQueryParameterName    = DefaultColumnQueryParameter;
            DirectionQueryParameterName = DefaultDirectionQueryParameter;

            string[] sortings = Query.Get(ColumnOrderValue.DefaultSortingQueryParameter).Count > 0 ?
                                Query.Get(ColumnOrderValue.DefaultSortingQueryParameter).ToArray() : null;
            if (sortings != null)
            {
                foreach (string sorting in sortings)
                {
                    ColumnOrderValue column = CreateColumnData(sorting);
                    if (column != ColumnOrderValue.Null)
                    {
                        _sortValues.Add(column);
                    }
                }
            }
        }
示例#3
0
        private bool ValidateSorting <T, TNext>(TestGrid grid, Func <TestModel, T> orderExpression,
                                                string columnName,
                                                GridSortDirection direction,
                                                Func <TestModel, TNext> orderExpression2,
                                                string columnName2,
                                                GridSortDirection?direction2,
                                                IComparer <T> comparer,
                                                IComparer <TNext> nextComparer)
        {
            var payload = new ColumnOrderValue(columnName, direction,
                                               grid.Settings.SortSettings.SortValues.Count + 1);

            grid.Query.AddParameter(ColumnOrderValue.DefaultSortingQueryParameter, payload.ToString());
            grid.Settings = new QueryStringGridSettingsProvider(grid.Query);

            IOrderedEnumerable <TestModel> etalonCollection;

            switch (direction)
            {
            case GridSortDirection.Ascending:
                if (comparer == null)
                {
                    etalonCollection = _repo.GetAll().OrderBy(orderExpression);
                }
                else
                {
                    etalonCollection = _repo.GetAll().OrderBy(orderExpression, comparer);
                }
                break;

            case GridSortDirection.Descending:
                if (comparer == null)
                {
                    etalonCollection = _repo.GetAll().OrderByDescending(orderExpression);
                }
                else
                {
                    etalonCollection = _repo.GetAll().OrderByDescending(orderExpression, comparer);
                }
                break;

            default:
                throw new ArgumentOutOfRangeException("direction");
            }

            if (orderExpression2 != null && !string.IsNullOrWhiteSpace(columnName2) && direction2.HasValue)
            {
                payload = new ColumnOrderValue(columnName2, direction2.Value,
                                               grid.Settings.SortSettings.SortValues.Count + 1);
                grid.Query.AddParameter(ColumnOrderValue.DefaultSortingQueryParameter, payload.ToString());
                grid.Settings = new QueryStringGridSettingsProvider(grid.Query);

                switch (direction2.Value)
                {
                case GridSortDirection.Ascending:
                    if (comparer == null)
                    {
                        etalonCollection = _repo.GetAll().OrderBy(orderExpression2);
                    }
                    else
                    {
                        etalonCollection = _repo.GetAll().OrderBy(orderExpression2, nextComparer);
                    }
                    break;

                case GridSortDirection.Descending:
                    if (comparer == null)
                    {
                        etalonCollection = _repo.GetAll().OrderByDescending(orderExpression2);
                    }
                    else
                    {
                        etalonCollection = _repo.GetAll().OrderByDescending(orderExpression2, nextComparer);
                    }
                    break;

                default:
                    throw new ArgumentOutOfRangeException("direction");
                }
            }
            IEnumerable <TestModel> resultCollection = grid.GetItemsToDisplay();

            if (!ValidateCollectionsTheSame(resultCollection, etalonCollection))
            {
                return(false);
            }
            return(true);
        }
 public async Task RemoveExtSorting(ColumnOrderValue column)
 {
     Grid.RemoveQueryString(ColumnOrderValue.DefaultSortingQueryParameter, column.ToString());
     await UpdateGrid();
     await OnExtSortChanged();
 }
示例#5
0
 protected async Task CancelButtonClicked(ColumnOrderValue column)
 {
     await GridComponent.RemoveExtSorting(column);
 }
示例#6
0
 protected async Task TitleButtonClicked(ColumnOrderValue column)
 {
     await GridComponent.ChangeExtSorting(column);
 }