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); }
/// <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("\" /> "); #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 \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"); }
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())); } }