Esempio n. 1
0
        public static MvcHtmlString SortableHeader(this HtmlHelper row, object queryObject, string columnId, string title, object htmlAttributes = null)
        {
            var properties = string.Empty;
            IDictionary <string, object> attributes = new RouteValueDictionary(htmlAttributes);

            var sortingInfo = queryObject as ISortingParameters ?? new SortingParameters();

            var currentSort       = sortingInfo.Sort;
            var currentDirection  = sortingInfo.SortDirection;
            var urlActionDelegate = sortingInfo.ActionFunc;

            const string direction        = "asc";
            var          newSortDirection = direction;

            foreach (var attr in attributes)
            {
                properties += " " + attr.Key + "=\"" + attr.Value.ToString() + "\" ";
            }

            string sortableHeaderCssClass = Configurations.WebConfigurations.PagingConfigurations.SortableHeaderCssClass;
            string sortableHeader         = sortableHeaderCssClass;
            var    cssClass = sortableHeader;
            var    sortIcon = "";

            if (!string.IsNullOrEmpty(currentSort) && currentSort == columnId)
            {
                var sorted = Configurations.WebConfigurations.PagingConfigurations.SortedHeaderCssClass;
                cssClass += string.Format(" {0}", sorted);
                if (currentDirection.ToLower().StartsWith("d"))
                {
                    string sortedIcondDescending = Configurations.WebConfigurations.PagingConfigurations.SortedIcondDescending;
                    sortIcon         = sortedIcondDescending;
                    newSortDirection = direction;
                }
                else
                {
                    string sortedIcondAscending = Configurations.WebConfigurations.PagingConfigurations.SortedIcondAscending;
                    sortIcon         = sortedIcondAscending;
                    newSortDirection = "desc";
                }
            }
            else
            {
                // default (initial sort) is ascending
                newSortDirection = direction;
            }

            var iconSpan = string.Format("<span class=\"glyphicon glyph{0}\"></span>", sortIcon);

            sortingInfo.Sort          = columnId;
            sortingInfo.SortDirection = newSortDirection;

            var link = BasePagingExtensions.CreatePageLink(urlActionDelegate, queryObject, title, title);

            sortingInfo.Sort          = currentSort;
            sortingInfo.SortDirection = currentDirection;

            return(MvcHtmlString.Create(string.Format("<th class=\"{0}\" id=\"{1}\" {2}>{3} {4} </th>", cssClass, columnId, properties, link, iconSpan)));
        }
Esempio n. 2
0
        public static MvcHtmlString PageLinks(
            this HtmlHelper html,
            object queryObject,
            Func <object, string> urlActionDelegate,
            int linksToShow = 0)
        {
            var pagingInfoViewModel = queryObject as IPagingParameters;
            var result = new StringBuilder();

            if (pagingInfoViewModel != null)
            {
                var currentPage = pagingInfoViewModel.PageNumber + 1;
                var totalPages  = pagingInfoViewModel.TotalPages;
                linksToShow = (linksToShow == 0) ? totalPages : linksToShow;

                if (pagingInfoViewModel.TotalPages <= 1)
                {
                    return(MvcHtmlString.Create(string.Empty));
                }


                var    stringWriter = new StringWriter(result);
                string linkBlock    = string.Empty;

                using (var textWriter = new NavHtmlTextWritter(stringWriter))
                {
                    {
                        textWriter.AddAttribute(HtmlTextWriterAttribute.Class, Configurations.WebConfigurations.PagingConfigurations.PaginationCssClass);
                        textWriter.RenderBeginTag(HtmlTextWriterTag.Ul);
                        {
                            if (currentPage > 1)
                            {
                                pagingInfoViewModel.PageNumber = 1;
                                PageItem(textWriter, BasePagingExtensions.CreatePageLink(urlActionDelegate, queryObject, Configurations.WebConfigurations.PagingConfigurations.FirstPageText));


                                pagingInfoViewModel.PageNumber = currentPage - 1;
                                PageItem(textWriter, BasePagingExtensions.CreatePageLink(urlActionDelegate, queryObject, Configurations.WebConfigurations.PagingConfigurations.PreviousPageText));
                            }

                            // create page links
                            int start = 1;
                            int end   = totalPages;
                            start = PagerPounds(linksToShow, totalPages, currentPage, start, ref end);

                            for (int i = start; i <= end; i++)
                            {
                                pagingInfoViewModel.PageNumber = i;
                                if (i == currentPage)
                                {
                                    PageItem(textWriter, BasePagingExtensions.CreatePageLink(urlActionDelegate, queryObject, i.ToString()), Configurations.WebConfigurations.PagingConfigurations.ActivePageClass);
                                }
                                else
                                {
                                    PageItem(textWriter, BasePagingExtensions.CreatePageLink(urlActionDelegate, queryObject, i.ToString()));
                                }
                            }


                            // create 'Next >>' link
                            if (currentPage < totalPages)
                            {
                                pagingInfoViewModel.PageNumber = currentPage + 1;
                                PageItem(textWriter, BasePagingExtensions.CreatePageLink(urlActionDelegate, queryObject, Configurations.WebConfigurations.PagingConfigurations.NextPageText));

                                pagingInfoViewModel.PageNumber = totalPages;
                                PageItem(textWriter, BasePagingExtensions.CreatePageLink(urlActionDelegate, queryObject, Configurations.WebConfigurations.PagingConfigurations.LastPageText));
                            }


                            textWriter.RenderEndTag();
                        }
                    }
                }
            }
            return(MvcHtmlString.Create(result.ToString()));
        }