Ejemplo n.º 1
0
        protected override void OnParametersSet()
        {
            _filterComponents = new QueryDictionary <Type>();
            _filterComponents.Add("System.String", typeof(TextFilterComponent <T>));
            _filterComponents.Add("System.Int32", typeof(NumberFilterComponent <T>));
            _filterComponents.Add("System.Double", typeof(NumberFilterComponent <T>));
            _filterComponents.Add("System.Decimal", typeof(NumberFilterComponent <T>));
            _filterComponents.Add("System.Byte", typeof(NumberFilterComponent <T>));
            _filterComponents.Add("System.Single", typeof(NumberFilterComponent <T>));
            _filterComponents.Add("System.Float", typeof(NumberFilterComponent <T>));
            _filterComponents.Add("System.Int64", typeof(NumberFilterComponent <T>));
            _filterComponents.Add("System.Int16", typeof(NumberFilterComponent <T>));
            _filterComponents.Add("System.UInt64", typeof(NumberFilterComponent <T>));
            _filterComponents.Add("System.UInt32", typeof(NumberFilterComponent <T>));
            _filterComponents.Add("System.UInt16", typeof(NumberFilterComponent <T>));
            _filterComponents.Add("System.DateTime", typeof(DateTimeFilterComponent <T>));
            _filterComponents.Add("System.Date", typeof(DateTimeFilterComponent <T>));
            _filterComponents.Add("System.DateTimeOffset", typeof(DateTimeFilterComponent <T>));
            _filterComponents.Add("System.Boolean", typeof(BooleanFilterComponent <T>));

            if (CustomFilters == null)
            {
                CustomFilters = new QueryDictionary <Type>();
            }
            if (CustomFilters.Any(r => r.Key.Equals(SelectItem.ListFilter)))
            {
                CustomFilters.Remove(SelectItem.ListFilter);
            }
            CustomFilters.Add(SelectItem.ListFilter, typeof(ListFilterComponent <T>));
            foreach (var widget in CustomFilters)
            {
                if (_filterComponents.ContainsKey(widget.Key))
                {
                    _filterComponents[widget.Key] = widget.Value;
                }
                else
                {
                    _filterComponents.Add(widget);
                }
            }

            FirstColumn = (ICGridColumn)Grid.Columns.FirstOrDefault();

            _hasSubGrid           = Grid.SubGridKeys != null && Grid.SubGridKeys.Length > 0;
            _hasTotals            = Grid.IsSumEnabled || Grid.IsAverageEnabled || Grid.IsMaxEnabled || Grid.IsMinEnabled;
            _requiredTotalsColumn = _hasTotals &&
                                    FirstColumn != null &&
                                    (FirstColumn.IsSumEnabled || FirstColumn.IsAverageEnabled ||
                                     FirstColumn.IsMaxEnabled || FirstColumn.IsMinEnabled);

            InitSubGridVars();

            var queryBuilder          = new CustomQueryStringBuilder(Grid.Settings.SearchSettings.Query);
            var exceptQueryParameters = new List <string> {
                GridPager.DefaultPageSizeQueryParameter
            };

            _changePageSizeUrl = queryBuilder.GetQueryStringExcept(exceptQueryParameters);
            _pageSize          = Grid.Pager.ChangePageSize && Grid.Pager.QueryPageSize > 0 ? Grid.Pager.QueryPageSize : Grid.Pager.PageSize;
        }
Ejemplo n.º 2
0
        public GridPager(IQueryDictionary <StringValues> query)
        {
            if (query == null)
            {
                throw new Exception("No http context here!");
            }

            _query        = query;
            _currentPage  = -1;
            _queryBuilder = new CustomQueryStringBuilder(query);

            ParameterName     = DefaultPageQueryParameter;
            TemplateName      = DefaultPagerViewName;
            MaxDisplayedPages = MaxDisplayedPages;

            string pageSizeParameter = query.Get(DefaultPageSizeQueryParameter);
            int    pageSize          = 0;

            if (pageSizeParameter != null)
            {
                int.TryParse(pageSizeParameter, out pageSize);
            }
            QueryPageSize = pageSize;

            PageSize = DefaultPageSize;
        }
        private string GetSortUrl(string columnName, GridSortDirection?direction)
        {
            //switch direction for link:
            GridSortDirection newDir = direction == GridSortDirection.Ascending
                                           ? GridSortDirection.Descending
                                           : GridSortDirection.Ascending;
            //determine current url:
            var    builder = new CustomQueryStringBuilder(_settings.Context.Request.QueryString);
            string url     =
                builder.GetQueryStringExcept(new[]
            {
                GridPager.DefaultPageQueryParameter,
                _settings.ColumnQueryParameterName,
                _settings.DirectionQueryParameterName
            });

            if (string.IsNullOrEmpty(url))
            {
                url = "?";
            }
            else
            {
                url += "&";
            }
            return(string.Format("{0}{1}={2}&{3}={4}", url, _settings.ColumnQueryParameterName, columnName,
                                 _settings.DirectionQueryParameterName,
                                 ((int)newDir).ToString(CultureInfo.InvariantCulture)));
        }
Ejemplo n.º 4
0
        protected override void OnParametersSet()
        {
            _sortedColumns = Grid.Settings.SortSettings.SortValues.OrderBy(r => r.Id);
            var queryBuilder          = new CustomQueryStringBuilder(Grid.Settings.SortSettings.Query);
            var exceptQueryParameters = new List <string>();

            _groupUrl = queryBuilder.GetQueryStringExcept(exceptQueryParameters);
        }
Ejemplo n.º 5
0
        public GridPager()
        {
            _query        = new QueryDictionary <StringValues>();
            _currentPage  = -1;
            _queryBuilder = new CustomQueryStringBuilder(_query);

            ParameterName     = DefaultPageQueryParameter;
            MaxDisplayedPages = MaxDisplayedPages;
            PageSize          = DefaultPageSize;
        }
Ejemplo n.º 6
0
        public GridPager(IQueryDictionary <StringValues> query)
        {
            if (query == null)
            {
                throw new Exception("No http context here!");
            }

            _query        = query;
            _currentPage  = -1;
            _queryBuilder = new CustomQueryStringBuilder(query);

            ParameterName     = DefaultPageQueryParameter;
            TemplateName      = DefaultPagerViewName;
            MaxDisplayedPages = MaxDisplayedPages;
            PageSize          = DefaultPageSize;
        }
Ejemplo n.º 7
0
        public BaseGridPager(HttpContext context)
        {
            if (context == null)
            {
                throw new Exception("No http context here!");
            }

            _context      = context;
            _currentPage  = -1;
            _queryBuilder = new CustomQueryStringBuilder(HttpContext.Current.Request.QueryString);

            ParameterName     = DefaultPageQueryParameter;
            TemplateName      = DefaultPagerViewName;
            MaxDisplayedPages = MaxDisplayedPages;
            PageSize          = DefaultPageSize;
        }
        public void TestWithParameter()
        {
            var queryStringParameters = new NameValueCollection();

            queryStringParameters.Add("key1", "value1");
            queryStringParameters.Add("key2", "value2");
            queryStringParameters.Add("key3", "value3");

            _builder = new CustomQueryStringBuilder(queryStringParameters);

            var str1 = _builder.GetQueryStringWithParameter("key4", "value4");

            Assert.AreEqual(str1, "?key1=value1&key2=value2&key3=value3&key4=value4");

            str1 = _builder.GetQueryStringWithParameter("key4", "value4new");
            Assert.AreEqual(str1, "?key1=value1&key2=value2&key3=value3&key4=value4new");
        }
        public void TestWithParameter()
        {
            QueryDictionary <StringValues> query = new QueryDictionary <StringValues>();

            query.Add("key1", "value1");
            query.Add("key2", "value2");
            query.Add("key3", "value3");

            _builder = new CustomQueryStringBuilder(query);

            var str1 = _builder.GetQueryStringWithParameter("key4", "value4");

            Assert.AreEqual(str1, "?key1=value1&key2=value2&key3=value3&key4=value4");

            str1 = _builder.GetQueryStringWithParameter("key4", "value4new");
            Assert.AreEqual(str1, "?key1=value1&key2=value2&key3=value3&key4=value4new");
        }
        public void TestExcept()
        {
            var queryStringParameters = new NameValueCollection();

            queryStringParameters.Add("key1", "value1");
            queryStringParameters.Add("key2", "value2");
            _builder = new CustomQueryStringBuilder(queryStringParameters);

            var str1 = _builder.GetQueryStringExcept(new[] { "key1" });

            Assert.AreEqual(str1, "?key2=value2");

            str1 = _builder.GetQueryStringExcept(new[] { "key2" });
            Assert.AreEqual(str1, "?key1=value1");

            str1 = _builder.GetQueryStringExcept(new[] { "key1", "key2" });
            Assert.AreEqual(str1, string.Empty);
        }
Ejemplo n.º 11
0
        public void TestExcept()
        {
            var queryStringParameters = new NameValueCollection();

            queryStringParameters.Add("key1", "value1");
            queryStringParameters.Add("key2", "value2");
            _builder = new CustomQueryStringBuilder(queryStringParameters);

            var str1 = _builder.GetQueryStringExcept(new[] { "key1" });

            PAssert.IsTrue(() => str1 == "?key2=value2");

            str1 = _builder.GetQueryStringExcept(new[] { "key2" });
            PAssert.IsTrue(() => str1 == "?key1=value1");

            str1 = _builder.GetQueryStringExcept(new[] { "key1", "key2" });
            PAssert.IsTrue(() => str1 == "");
        }
        public void TestExcept()
        {
            QueryDictionary <StringValues> query = new QueryDictionary <StringValues>();

            query.Add("key1", "value1");
            query.Add("key2", "value2");

            _builder = new CustomQueryStringBuilder(query);

            var str1 = _builder.GetQueryStringExcept(new[] { "key1" });

            Assert.AreEqual(str1, "?key2=value2");

            str1 = _builder.GetQueryStringExcept(new[] { "key2" });
            Assert.AreEqual(str1, "?key1=value1");

            str1 = _builder.GetQueryStringExcept(new[] { "key1", "key2" });
            Assert.AreEqual(str1, string.Empty);
        }
Ejemplo n.º 13
0
        /**
         * public SGrid(IEnumerable<T> items, IQueryCollection query, int page, bool renderOnlyRows,
         *  string pagerViewName = GridPager.DefaultPagerViewName)
         *  : this(items, query)
         * {
         *  Pager = new GridPager(query, page, pagerViewName);
         *  RenderOptions.RenderRowsOnly = renderOnlyRows;
         * }
         */

        public SGrid(IEnumerable <T> items, IQueryCollection query, bool renderOnlyRows,
                     string pagerViewName = GridPager.DefaultPagerViewName)
            : this(items, query)
        {
            var    urlParameters = CustomQueryStringBuilder.Convert(query);
            string pageParameter = urlParameters[((GridPager)Pager).ParameterName];
            int    page          = 0;

            if (pageParameter != null)
            {
                int.TryParse(pageParameter, out page);
            }
            if (page == 0)
            {
                page++;
            }
            ((GridPager)_pager).CurrentPage  = page;
            ((GridPager)_pager).TemplateName = pagerViewName;
            RenderOptions.RenderRowsOnly     = renderOnlyRows;
        }
        public void TestWithParameter()
        {
            QueryBuilder qb = new QueryBuilder();

            qb.Add("key1", "value1");
            qb.Add("key2", "value2");
            qb.Add("key3", "value3");
            var request = new DefaultHttpRequest(new DefaultHttpContext());

            request.QueryString = qb.ToQueryString();

            _builder = new CustomQueryStringBuilder(request.Query);

            var str1 = _builder.GetQueryStringWithParameter("key4", "value4");

            Assert.AreEqual(str1, "?key1=value1&key2=value2&key3=value3&key4=value4");

            str1 = _builder.GetQueryStringWithParameter("key4", "value4new");
            Assert.AreEqual(str1, "?key1=value1&key2=value2&key3=value3&key4=value4new");
        }
Ejemplo n.º 15
0
        protected override void OnParametersSet()
        {
            _searchValue = Grid.Settings.SearchSettings.SearchValue;

            //determine current url:
            var queryBuilder = new CustomQueryStringBuilder(((QueryStringSearchSettings)Grid.Settings.SearchSettings).Query);

            var exceptQueryParameters = new List <string>
            {
                QueryStringFilterSettings.DefaultTypeQueryParameter,
                QueryStringFilterSettings.DefaultClearInitFilterQueryParameter
            };
            string pagerParameterName = GetPagerQueryParameterName(Grid.Pager);

            if (!string.IsNullOrEmpty(pagerParameterName))
            {
                exceptQueryParameters.Add(pagerParameterName);
            }

            _seachUrl = queryBuilder.GetQueryStringExcept(exceptQueryParameters);
        }
Ejemplo n.º 16
0
        public GridPager(IQueryDictionary <StringValues> query)
        {
            _query        = new QueryDictionary <StringValues>();
            _currentPage  = -1;
            _queryBuilder = new CustomQueryStringBuilder(_query);

            ParameterName     = DefaultPageQueryParameter;
            MaxDisplayedPages = MaxDisplayedPages;
            PageSize          = DefaultPageSize;

            _query        = query;
            _queryBuilder = new CustomQueryStringBuilder(_query);

            string pageSizeParameter = query.Get(DefaultPageSizeQueryParameter);
            int    pageSize          = 0;

            if (pageSizeParameter != null)
            {
                int.TryParse(pageSizeParameter, out pageSize);
            }
            QueryPageSize = pageSize;
        }
        public void TestExcept()
        {
            QueryBuilder qb = new QueryBuilder();

            qb.Add("key1", "value1");
            qb.Add("key2", "value2");
            var request = new DefaultHttpRequest(new DefaultHttpContext());

            request.QueryString = qb.ToQueryString();

            _builder = new CustomQueryStringBuilder(request.Query);

            var str1 = _builder.GetQueryStringExcept(new[] { "key1" });

            Assert.AreEqual(str1, "?key2=value2");

            str1 = _builder.GetQueryStringExcept(new[] { "key2" });
            Assert.AreEqual(str1, "?key1=value1");

            str1 = _builder.GetQueryStringExcept(new[] { "key1", "key2" });
            Assert.AreEqual(str1, string.Empty);
        }
Ejemplo n.º 18
0
        protected override void OnParametersSet()
        {
            //determine current column filter settings
            _filterSettings = new List <ColumnFilterValue>();
            if (FilterSettings.IsInitState(Column) && Column.InitialFilterSettings != ColumnFilterValue.Null)
            {
                _filterSettings.Add(Column.InitialFilterSettings);
            }
            else
            {
                _filterSettings.AddRange(FilterSettings.FilteredColumns.GetByColumn(Column));
            }

            _isColumnFiltered = _filterSettings.Any(r => r.FilterType != GridFilterType.Condition);

            //determine current url:
            var queryBuilder = new CustomQueryStringBuilder(FilterSettings.Query);

            var exceptQueryParameters = new List <string>
            {
                QueryStringFilterSettings.DefaultTypeQueryParameter,
                QueryStringFilterSettings.DefaultClearInitFilterQueryParameter
            };
            string pagerParameterName = GetPagerQueryParameterName(((ICGrid)(Column.ParentGrid)).Pager);

            if (!string.IsNullOrEmpty(pagerParameterName))
            {
                exceptQueryParameters.Add(pagerParameterName);
            }

            _url = queryBuilder.GetQueryStringExcept(exceptQueryParameters);

            _clearInitFilter = FilterSettings.Query.Get(QueryStringFilterSettings.DefaultClearInitFilterQueryParameter);

            if (Column.Hidden)
            {
                _cssStyles = ((GridStyledColumn)Column).GetCssStylesString() + " " + ThStyle;
            }
            else
            {
                _cssStyles = ((GridStyledColumn)Column).GetCssStylesString();
            }
            _cssClass = ((GridStyledColumn)Column).GetCssClassesString() + " " + ThClass;

            if (GridComponent.Grid.Direction == GridDirection.RTL)
            {
                _cssStyles = string.Concat(_cssStyles, " text-align:right;direction:rtl;").Trim();
            }

            // tables with fixed layout don't need to set up column width on the header
            if (GridComponent.Grid.TableLayout == TableLayout.Auto)
            {
                if (!string.IsNullOrWhiteSpace(Column.Width))
                {
                    _cssStyles = string.Concat(_cssStyles, " width:", Column.Width, ";").Trim();
                }
            }

            List <string> cssFilterClasses = new List <string>();

            cssFilterClasses.Add(FilterButtonCss);
            if (_isColumnFiltered)
            {
                cssFilterClasses.Add(FilteredButtonCssClass);
            }
            _cssFilterClass = string.Join(" ", cssFilterClasses);

            List <string> cssSortingClass = new List <string>();

            cssSortingClass.Add("grid-header-title");

            if (Column.IsSorted)
            {
                cssSortingClass.Add("sorted");
                cssSortingClass.Add(Column.Direction == GridSortDirection.Ascending ? "sorted-asc" : "sorted-desc");
            }
            _cssSortingClass = string.Join(" ", cssSortingClass);

            if (Column.FilterEnabled)
            {
                FilterWidgetRender = CreateFilterWidgetComponent();
            }

            if (!string.IsNullOrWhiteSpace(Column.Name))
            {
                GridComponent.HeaderComponents.AddParameter(Column.Name, this);
            }
        }
Ejemplo n.º 19
0
        public IHtmlContent Render(IGridColumn column)
        {
            if (!column.FilterEnabled)
            {
                return(new HtmlString(string.Empty));
            }


            //determine current column filter settings
            var filterSettings = new List <ColumnFilterValue>();

            if (_settings.IsInitState && column.InitialFilterSettings != ColumnFilterValue.Null)
            {
                filterSettings.Add(column.InitialFilterSettings);
            }
            else
            {
                filterSettings.AddRange(_settings.FilteredColumns.GetByColumn(column));
            }

            bool isColumnFiltered = filterSettings.Any();

            //determine current url:
            var builder = new CustomQueryStringBuilder(_settings.Context.Request.Query.ToNameValueCollection());

            var exceptQueryParameters = new List <string>
            {
                QueryStringFilterSettings.DefaultTypeQueryParameter,
                QueryStringFilterSettings.DefaultFilterInitQueryParameter
            };
            string pagerParameterName = GetPagerQueryParameterName(column.ParentGrid.Pager);

            if (!string.IsNullOrEmpty(pagerParameterName))
            {
                exceptQueryParameters.Add(pagerParameterName);
            }

            string url = builder.GetQueryStringExcept(exceptQueryParameters);

            var gridFilterButton = new TagBuilder("span");

            gridFilterButton.AddCssClass(FilterButtonCss);
            if (isColumnFiltered)
            {
                gridFilterButton.AddCssClass(FilteredButtonCssClass);
            }
            gridFilterButton.Attributes.Add("title", Strings.FilterButtonTooltipText);

            var gridFilter  = new TagBuilder("div");
            var dataKeyList = new Dictionary <string, string>
            {
                { "data-type", column.FilterWidgetTypeName },
                { "data-name", column.Name },
                { "data-widgetdata", JsonHelper.JsonSerializer(column.FilterWidgetData) },
                { "data-filterdata", JsonHelper.JsonSerializer(filterSettings) },
                { "data-url", url }
            };

            gridFilter.InnerHtml.SetHtmlContent(gridFilterButton.ToString());

            gridFilter.AddCssClass("grid-filter");
            foreach (var data in dataKeyList)
            {
                if (!string.IsNullOrWhiteSpace(data.Value))
                {
                    gridFilter.Attributes.Add(data.Key, data.Value);
                }
            }

            return(new HtmlString(gridFilter.ToString()));
        }
Ejemplo n.º 20
0
 public GridPager(IQueryDictionary <StringValues> query) : this()
 {
     _query        = query;
     _queryBuilder = new CustomQueryStringBuilder(_query);
 }
Ejemplo n.º 21
0
        protected override void OnParametersSet()
        {
            //determine current column filter settings
            _filterSettings = new List <ColumnFilterValue>();
            if (FilterSettings.IsInitState(Column) && Column.InitialFilterSettings != ColumnFilterValue.Null)
            {
                _filterSettings.Add(Column.InitialFilterSettings);
            }
            else
            {
                _filterSettings.AddRange(FilterSettings.FilteredColumns.GetByColumn(Column));
            }

            _isColumnFiltered = _filterSettings.Any();

            //determine current url:
            var queryBuilder = new CustomQueryStringBuilder(FilterSettings.Query);

            var exceptQueryParameters = new List <string>
            {
                QueryStringFilterSettings.DefaultTypeQueryParameter,
                QueryStringFilterSettings.DefaultClearInitFilterQueryParameter
            };
            string pagerParameterName = GetPagerQueryParameterName(((ICGrid <T>)(Column.ParentGrid)).Pager);

            if (!string.IsNullOrEmpty(pagerParameterName))
            {
                exceptQueryParameters.Add(pagerParameterName);
            }

            _url = queryBuilder.GetQueryStringExcept(exceptQueryParameters);

            _clearInitFilter = FilterSettings.Query.Get(QueryStringFilterSettings.DefaultClearInitFilterQueryParameter);

            if (((GridColumnBase <T>)Column).Hidden)
            {
                _cssStyles = ((GridStyled)Column).GetCssStylesString() + " " + ThStyle;
            }
            else
            {
                _cssStyles = ((GridStyled)Column).GetCssStylesString();
            }
            _cssClass = ((GridStyled)Column).GetCssClassesString() + " " + ThClass;

            if (!string.IsNullOrWhiteSpace(Column.Width))
            {
                _cssStyles = string.Concat(_cssStyles, " width:", Column.Width, ";").Trim();
            }
            ;

            List <string> cssFilterClasses = new List <string>();

            cssFilterClasses.Add(FilterButtonCss);
            if (_isColumnFiltered)
            {
                cssFilterClasses.Add(FilteredButtonCssClass);
            }
            _cssFilterClass = string.Join(" ", cssFilterClasses);

            List <string> cssSortingClass = new List <string>();

            cssSortingClass.Add("grid-header-title");

            if (Column.IsSorted)
            {
                cssSortingClass.Add("sorted");
                cssSortingClass.Add(Column.Direction == GridSortDirection.Ascending ? "sorted-asc" : "sorted-desc");
            }
            _cssSortingClass = string.Join(" ", cssSortingClass);

            FilterWidgetRender = CreateFilterWidgetComponent();
        }