public ProductModel()
        {
            PageSize   = 20;
            TotalCount = 4;
            Products   = new List <Product>();
            Columns    = new List <string>()
            {
                "Id", "Email", "CSV"
            };

            GridColumns = new WebGridColumn[Columns.Count];

            Grid = new WebGrid(null, rowsPerPage: PageSize);

            for (int i = 0; i < Columns.Count; i++)
            {
                var col = Grid.Column(Columns[i], Columns[i]);
                GridColumns[Columns.Count - 1 - i] = col;
            }

            Grid.Bind(Products, autoSortAndPage: true, rowCount: PageSize);
            Grid.GetHtml(tableStyle: "table table-bordered",
                         mode: WebGridPagerModes.All,
                         firstText: "<< First",
                         previousText: "< Prev",
                         nextText: "Next >",
                         lastText: "Last >>",
                         columns: GridColumns);
        }
Exemple #2
0
        /// <summary>
        /// Create an mvc WebGrid using defaults or supplied params
        /// If autoSortAndPage is false, totalRowCount must be provided for server-side paging to work
        /// </summary>
        /// <param name="htmlHelper"></param>
        /// <param name="sourceData"></param>
        /// <param name="pagerMode"></param>
        /// <param name="ajaxUpdateCallback">jQueryTableStyling required to update theme to match jQuery Theme. If you must call other method, include this call in the other method.
        /// </param>
        /// <param name="rowsPerPage"></param>
        /// <param name="pagerLinksCount"></param>
        /// <param name="defaultSort"></param>
        /// <param name="canPage"></param>
        /// <param name="canSort"></param>
        /// <returns></returns>
        public static WebGrid WebGridCustom(this HtmlHelper htmlHelper,
                                            IEnumerable <object> sourceData,
                                            string ajaxUpdateCallback    = "jQueryTableStyling",
                                            string ajaxUpdateContainerId = "grid",
                                            int rowsPerPage      = PAGE_SIZE,
                                            string defaultSort   = null,
                                            bool canPage         = true,
                                            bool canSort         = true,
                                            bool autoSortAndPage = true,
                                            int totalRowCount    = 0)
        {
            WebGrid grid = null;

            if (autoSortAndPage)
            {       //automatic paging and sorting handled by the grid
                grid = new WebGrid(sourceData, canPage: canPage, canSort: canSort,
                                   rowsPerPage: rowsPerPage,
                                   ajaxUpdateContainerId: ajaxUpdateContainerId,
                                   ajaxUpdateCallback: ajaxUpdateCallback,              //jQuery theme applied
                                   defaultSort: defaultSort);
            }
            else
            {       //paging and sorting handled by the repository
                grid = new WebGrid(null,
                                   canPage: canPage, canSort: canSort,
                                   rowsPerPage: rowsPerPage,
                                   ajaxUpdateContainerId: ajaxUpdateContainerId,
                                   ajaxUpdateCallback: ajaxUpdateCallback,              //jQuery theme applied
                                   defaultSort: defaultSort);
                grid.Bind(source: sourceData, rowCount: totalRowCount, autoSortAndPage: false);
            }
            return(grid);
        }
        public static IHtmlString Grilla <TEntidad>(
            this HtmlHelper helper,
            ListaPaginada <TEntidad> items,
            Func <WebGrid, WebGridColumn[]> columnas)
        {
            var grid = new WebGrid(rowsPerPage: items.ItemsPorPagina,
                                   sortDirectionFieldName: "dirOrden",
                                   pageFieldName: "pagina",
                                   sortFieldName: "ordenarPor");

            grid.Bind((IEnumerable <dynamic>)items.Items, autoSortAndPage: false, rowCount: items.ItemsTotales);

            return(grid.GetHtml(
                       tableStyle: "table table-striped table-bordered",
                       columns: columnas(grid),
                       htmlAttributes: new { id = "grid" }));
        }
        public void CreateGrid(List <Product> products)
        {
            Products   = products;
            TotalCount = products.Count;

            GridColumns = new WebGridColumn[Columns.Count];

            Grid = new WebGrid(null, rowsPerPage: PageSize);

            for (int i = 0; i < Columns.Count; i++)
            {
                var col = Grid.Column(Columns[i], Columns[i]);
                GridColumns[i] = col;
            }

            Grid.Bind(Products, autoSortAndPage: true, rowCount: PageSize);
            Grid.GetHtml(tableStyle: "table table-bordered",
                         mode: WebGridPagerModes.All,
                         firstText: "<< First",
                         previousText: "< Prev",
                         nextText: "Next >",
                         lastText: "Last >>",
                         columns: GridColumns);
        }
        public override void Execute()
        {
            WriteLiteral("\r\n\r\n");



            WriteLiteral("\r\n");


            DefineSection("PackageHead", () => {
                WriteLiteral("\r\n    <script type=\"text/javascript\" src=\"");



            #line 7 "..\..\packages\Default.cshtml"
                Write(Href("scripts/Default.js"));


            #line default
            #line hidden
                WriteLiteral("\"></script>\r\n    <noscript>");



            #line 8 "..\..\packages\Default.cshtml"
                Write(PackageManagerResources.JavascriptRequired);


            #line default
            #line hidden
                WriteLiteral("</noscript>\r\n");
            });

            WriteLiteral("\r\n");



            #line 10 "..\..\packages\Default.cshtml"

            Page.SectionTitle = PackageManagerResources.SectionTitle;
            // Page Constants
            const int    PackagesPerPage  = 10;
            const string FilterCookieName = "packagesFilter";

            // Request parameters
            var view              = GetView(PageUtils.GetFilterValue(Request, FilterCookieName, "view"));
            var searchTerm        = Request.QueryString["search"];
            var packageSourceName = PageUtils.GetFilterValue(Request, FilterCookieName, "source");

            var packageSource = PageUtils.GetPackageSource(packageSourceName);

            PageUtils.PersistFilter(Response, FilterCookieName, new Dictionary <string, string> {
                { "view", view.ToString() },
                { "source", packageSourceName },
            });

            // Add values to ModelState
            ModelState.SetModelValue("view", view.ToString());

            WebProjectManager projectManager;
            WebGrid           grid;
            int totalPackages = 0;

            try {
                // This entire block needs ot be inside a try catch block. This is necessary because exceptions could be fired at two places
                // 1. When trying to connect to the remote repository. 2. When executing the Linq expression

                IEnumerable <IPackage> packages;

                projectManager = new WebProjectManager(packageSource.Source, PackageManagerModule.SiteRoot);
                // Read packages
                switch (view)
                {
                case View.Updates:
                    packages = projectManager.GetPackagesWithUpdates(searchTerm, packageSource.FilterPreferredPackages);
                    break;

                case View.Online:
                    IQueryable <IPackage> remotePackages = projectManager.GetRemotePackages(searchTerm, packageSource.FilterPreferredPackages);
                    totalPackages = remotePackages.Count();
                    packages      = WebProjectManager.CollapseVersions(remotePackages);
                    break;

                default:
                    packages = projectManager.GetInstalledPackages(searchTerm);
                    break;
                }
                if (view != View.Online)
                {
                    totalPackages = packages.Count();
                }

                grid = new WebGrid(rowsPerPage: PackagesPerPage, pageFieldName: "page");

                packages = packages.Skip(grid.PageIndex * PackagesPerPage)
                           .Take(PackagesPerPage);

                grid.Bind(packages.ToList(), columnNames: Enumerable.Empty <string>(), autoSortAndPage: false, rowCount: totalPackages);
            }
            catch (Exception exception) {
            #line default
            #line hidden
                WriteLiteral("        <div class=\"error message\">");



            #line 69 "..\..\packages\Default.cshtml"
                Write(exception.Message);


            #line default
            #line hidden
                WriteLiteral("</div>\r\n");



            #line 70 "..\..\packages\Default.cshtml"
                return;
            }



            #line default
            #line hidden
            WriteLiteral("\r\n");



            #line 74 "..\..\packages\Default.cshtml"

            var completedAction = Request.QueryString["action-completed"];
            if (!completedAction.IsEmpty())
            {
                var    packageName = Html.Encode(Request.QueryString["packageName"]);
                string message     = null;
                if (completedAction.Equals("Install", StringComparison.OrdinalIgnoreCase))
                {
                    message = String.Format(CultureInfo.CurrentCulture, PackageManagerResources.InstallSuccess, packageName);
                }
                else if (completedAction.Equals("Uninstall", StringComparison.OrdinalIgnoreCase))
                {
                    message = String.Format(CultureInfo.CurrentCulture, PackageManagerResources.UninstallSuccess, packageName);
                }
                else if (completedAction.Equals("Update", StringComparison.OrdinalIgnoreCase))
                {
                    message = String.Format(CultureInfo.CurrentCulture, PackageManagerResources.UpdateSuccess, packageName);
                }

                if (message != null)
                {
            #line default
            #line hidden
                    WriteLiteral("            <div class=\"success message\">\r\n                <img class=\"inline\" sr" +
                                 "c=\"");



            #line 91 "..\..\packages\Default.cshtml"
                    Write(Href(SiteAdmin.GetVirtualPath("~/images/ok.png")));


            #line default
            #line hidden
                    WriteLiteral("\" alt=\"");



            #line 91 "..\..\packages\Default.cshtml"
                    Write(Html.Raw(message));


            #line default
            #line hidden
                    WriteLiteral("\" />&nbsp;");



            #line 91 "..\..\packages\Default.cshtml"
                    Write(Html.Raw(message));


            #line default
            #line hidden
                    WriteLiteral("\r\n            </div>\r\n");



                    WriteLiteral("            <br />\r\n");



            #line 94 "..\..\packages\Default.cshtml"
                }
            }



            #line default
            #line hidden
            WriteLiteral("<form method=\"get\" action=\"\" class=\"group\">\r\n    <div class=\"left form-actions\">\r" +
                         "\n        <label>");



            #line 99 "..\..\packages\Default.cshtml"
            Write(PackageManagerResources.ShowLabel);


            #line default
            #line hidden
            WriteLiteral(":\r\n        ");



            #line 100 "..\..\packages\Default.cshtml"
            Write(Html.DropDownList("view", from v in new[] { View.Installed, View.Online, View.Updates }
                                    select new SelectListItem {
                Text = GetViewName(v), Value = v.ToString()
            }));


            #line default
            #line hidden
            WriteLiteral("\r\n        </label>                           \r\n   \r\n");



            #line 104 "..\..\packages\Default.cshtml"
            if (PackageManagerModule.PackageSources.Count() > 1)
            {
            #line default
            #line hidden


            #line 105 "..\..\packages\Default.cshtml"
                WriteLiteral("            <span ");


            #line default
            #line hidden

            #line 105 "..\..\packages\Default.cshtml"
                if (view == View.Installed)
                {
            #line default
            #line hidden

            #line 105 "..\..\packages\Default.cshtml"
                    Write(Html.Raw("style=\"display: none\""));


            #line default
            #line hidden

            #line 105 "..\..\packages\Default.cshtml"
                    ;
                }

            #line default
            #line hidden
                WriteLiteral(">\r\n                &nbsp;\r\n                <label>");



            #line 108 "..\..\packages\Default.cshtml"
                Write(PackageManagerResources.PackageSourceLabel);


            #line default
            #line hidden
                WriteLiteral(":</label>\r\n                ");



            #line 109 "..\..\packages\Default.cshtml"
                Write(Html.DropDownList("source", from f in PackageManagerModule.PackageSources.OrderBy(p => p.Name)
                                        select new SelectListItem {
                    Value    = f.Name,
                    Text     = f.Name,
                    Selected = f.Name.Equals(packageSourceName, StringComparison.OrdinalIgnoreCase)
                }
                                        ));


            #line default
            #line hidden
                WriteLiteral("\r\n            </span>\r\n");



            #line 117 "..\..\packages\Default.cshtml"
            }


            #line default
            #line hidden
            WriteLiteral("    </div>\r\n\r\n    <div class=\"right\">\r\n        <fieldset class=\"no-border\">\r\n    " +
                         "        <input type=\"text\" id=\"search\" name=\"search\" size=\"30\" value=\"");



            #line 122 "..\..\packages\Default.cshtml"
            Write(searchTerm);


            #line default
            #line hidden
            WriteLiteral("\" />\r\n            <input type=\"submit\" value=\"");



            #line 123 "..\..\packages\Default.cshtml"
            Write(PackageManagerResources.SearchLabel);


            #line default
            #line hidden
            WriteLiteral("\" />\r\n            <input type=\"reset\" id=\"searchReset\" value=\"");



            #line 124 "..\..\packages\Default.cshtml"
            Write(PackageManagerResources.ClearLabel);


            #line default
            #line hidden
            WriteLiteral("\" />\r\n        </fieldset>\r\n    </div>\r\n</form>\r\n\r\n");



            #line 129 "..\..\packages\Default.cshtml"
            if (view != View.Online && !projectManager.LocalRepository.GetPackages().Any())
            {
                var onlineLink = Href(PageUtils.GetPackagesHome()) + "?view=" + View.Online;


            #line default
            #line hidden

            #line 131 "..\..\packages\Default.cshtml"
                Write(Html.Raw(String.Format(CultureInfo.CurrentCulture, PackageManagerResources.NoPackagesInstalled, Html.Encode(onlineLink))));


            #line default
            #line hidden

            #line 131 "..\..\packages\Default.cshtml"

                return;
            }


            #line default
            #line hidden
            WriteLiteral("\r\n");



            #line 135 "..\..\packages\Default.cshtml"
            if (!grid.Rows.Any())
            {
            #line default
            #line hidden
                WriteLiteral("    <h3>");



            #line 136 "..\..\packages\Default.cshtml"
                Write(PackageManagerResources.NoPackagesFound);


            #line default
            #line hidden
                WriteLiteral("</h3>\r\n");



            #line 137 "..\..\packages\Default.cshtml"
            }
            else
            {
            #line default
            #line hidden
                WriteLiteral("    <ul id=\"package-list\">\r\n");



            #line 140 "..\..\packages\Default.cshtml"
                var dataDictionary = new Dictionary <string, object>(1);


            #line default
            #line hidden


            #line 141 "..\..\packages\Default.cshtml"
                foreach (var item in grid.Rows)
                {
                    IPackage package = item.Value;
                    dataDictionary["package"] = package;


            #line default
            #line hidden
                    WriteLiteral("        <li>\r\n            <div class=\"column-left\">\r\n                ");



            #line 146 "..\..\packages\Default.cshtml"
                    Write(RenderPage("_Package.cshtml", dataDictionary));


            #line default
            #line hidden
                    WriteLiteral("\r\n            </div>\r\n            <div class=\"right\">\r\n                <form meth" +
                                 "od=\"get\" action=\"");



            #line 149 "..\..\packages\Default.cshtml"
                    Write(Href(GetPostUrl(view, package, projectManager)));


            #line default
            #line hidden
                    WriteLiteral("\">\r\n                    <input type=\"hidden\" name=\"page\" value=\"");



            #line 150 "..\..\packages\Default.cshtml"
                    Write(grid.PageIndex + 1);


            #line default
            #line hidden
                    WriteLiteral("\" />\r\n                    <input type=\"hidden\" name=\"package\" value=\"");



            #line 151 "..\..\packages\Default.cshtml"
                    Write(package.Id);


            #line default
            #line hidden
                    WriteLiteral("\" />\r\n                    <input type=\"hidden\" name=\"version\" value=\"");



            #line 152 "..\..\packages\Default.cshtml"
                    Write(package.Version);


            #line default
            #line hidden
                    WriteLiteral("\" />\r\n                    <input type=\"hidden\" name=\"packageName\" value=\"");



            #line 153 "..\..\packages\Default.cshtml"
                    Write(package.GetDisplayName());


            #line default
            #line hidden
                    WriteLiteral("\" />\r\n                    <input class=\"formatted\" type=\"submit\" value=\"");



            #line 154 "..\..\packages\Default.cshtml"
                    Write(GetSubmitText(view, package, projectManager));


            #line default
            #line hidden
                    WriteLiteral("\" />\r\n                </form>\r\n            </div>\r\n            <div class=\"clear\"" +
                                 "></div>\r\n        </li>\r\n");



            #line 159 "..\..\packages\Default.cshtml"
                }


            #line default
            #line hidden
                WriteLiteral("    </ul>\r\n");



            #line 161 "..\..\packages\Default.cshtml"
            }


            #line default
            #line hidden


            #line 162 "..\..\packages\Default.cshtml"
            if (totalPackages > PackagesPerPage)
            {
            #line default
            #line hidden
                WriteLiteral("    <div class=\"pager\">\r\n        <strong>");



            #line 164 "..\..\packages\Default.cshtml"
                Write(PackageManagerResources.PageLabel);


            #line default
            #line hidden
                WriteLiteral(": </strong>\r\n        ");



            #line 165 "..\..\packages\Default.cshtml"
                Write(grid.Pager(WebGridPagerModes.FirstLast | WebGridPagerModes.NextPrevious,
                                 nextText: PackageManagerResources.NextText,
                                 previousText: PackageManagerResources.PreviousText));


            #line default
            #line hidden
                WriteLiteral("\r\n    </div>\r\n");



            #line 169 "..\..\packages\Default.cshtml"
            }


            #line default
            #line hidden
            WriteLiteral("\r\n\r\n");
        }
Exemple #6
0
        public MvcHtmlString GetHtml(object htmlAttributes = null)
        {
            if (this.model == null)
            {
                throw new Exception("Cannot render grid. Model is null");
            }

            var wrapperDiv = new TagBuilder("div");

            wrapperDiv.MergeAttributes(new RouteValueDictionary(htmlAttributes));
            wrapperDiv.AddCssClass("grid");

            if (!string.IsNullOrEmpty(this.Title))
            {
                wrapperDiv.InnerHtml += new TagBuilder("h2")
                {
                    InnerHtml = this.Title
                }
            }
            ;

            if (this.model.Any())
            {
                // the way the grid is bound depends on the "Count" property. If it has been set, then
                // the grid will be virtually paged, otherwise it won't be paged at all

                WebGrid webGrid = null;

                if (this.Count.HasValue)
                {
                    Debug.Assert(this.RowsPerPage.HasValue);
                    webGrid = new WebGrid(canPage: true, sortFieldName: "SortBy", sortDirectionFieldName: "SortDirection", pageFieldName: "Page", rowsPerPage: this.RowsPerPage.Value);
                    webGrid.Bind((IEnumerable <dynamic>) this.model, null, false, this.Count.Value);
                }
                else
                {
                    webGrid = new WebGrid(canPage: false);
                    webGrid.Bind((IEnumerable <dynamic>) this.model);
                }

                var webGridColumns = new List <WebGridColumn>();

                foreach (var field in this.Fields)
                {
                    PropertyInfo propertyInfo            = null;
                    var          expressionPropertyValue = ((dynamic)field).Expression;
                    if (expressionPropertyValue != null)
                    {
                        propertyInfo = (PropertyInfo)((MemberExpression)((LambdaExpression)expressionPropertyValue).Body).Member;
                    }
                    else
                    {
                        if (field.Format == null)
                        {
                            throw new Exception("When the format is not specified, the field expression cannot be null");
                        }
                    }

                    string columnHeader;
                    if (field.Header != null)
                    {
                        columnHeader = field.Header;
                    }
                    else
                    {
                        var displayAttribute = propertyInfo != null
                                                   ? propertyInfo.GetCustomAttributes(true)
                                               .OfType <DisplayAttribute>()
                                               .FirstOrDefault()
                                                   : null;

                        if (displayAttribute != null)
                        {
                            columnHeader = displayAttribute.Name;
                            if (string.IsNullOrEmpty(columnHeader))
                            {
                                columnHeader = propertyInfo.Name;
                            }
                        }
                        else
                        {
                            columnHeader = propertyInfo != null ? propertyInfo.Name : "";
                        }
                    }

                    var format = field.Format ?? (x => propertyInfo.GetValue(((WebGridRow)x).Value, null));

                    var cssClasses = new List <string>();
                    if (field.WordWrap)
                    {
                        cssClasses.Add("no-wrap-column");
                    }
                    if (field.CssClass != null)
                    {
                        cssClasses.Add(field.CssClass);
                    }

                    webGridColumns.Add(
                        webGrid.Column(
                            style: string.Join(" ", cssClasses),
                            header: columnHeader,
                            format: format,
                            canSort: field.CanSort));
                }

                wrapperDiv.InnerHtml += new MvcHtmlString(webGrid.GetHtml(
                                                              columns: webGridColumns,
                                                              tableStyle: "webgrid",
                                                              headerStyle: "webgrid-header",
                                                              footerStyle: "webgrid-footer",
                                                              alternatingRowStyle: "webgrid-alternating-row",
                                                              selectedRowStyle: "webgrid-selected-row",
                                                              rowStyle: "webgrid-row-style").ToString());
            }
            else
            {
                var noRecords = new TagBuilder("div");
                noRecords.AddCssClass("message-warning");
                noRecords.SetInnerText("Não existem registros a serem exibidos");
                wrapperDiv.InnerHtml += noRecords;
            }

            return(new MvcHtmlString(wrapperDiv.ToString()));
        }
    }