public ListColumns GetColumnsForType(Type type, ControllerContext controllerContext) { var columns = new ListColumns(); var modelMetadata = ModelMetadataProviders.Current.GetMetadataForType(null, type); var sortingValues = GetSortingValues(controllerContext); foreach(var metadata in modelMetadata.Properties) { if(metadata.IsHidden()) continue; var column = new ListColumn { DisplayName = metadata.GetDisplayName(), Name = metadata.PropertyName, IsSearchable = metadata.IsSearchable(), Order = metadata.Order, SortDirection = sortingValues.SortDirection, Type = metadata.ModelType, }; column.CellTemplate = FindCellTemplate(controllerContext, column.Name); column.HasCellTemplate = column.CellTemplate != null; column.IsSorted = column.Name.Equals(sortingValues.SortBy, StringComparison.InvariantCultureIgnoreCase); column.SortUrl = GetSortUrlForColumn(controllerContext, column, sortingValues); column.HeaderTemplate = FindHeaderTemplate(controllerContext, column.Name); column.HasHeaderTemplate = column.HeaderTemplate != null; columns.Add(column); } return columns; }
private static string GetSortUrlForColumn(ControllerContext controllerContext, ListColumn column, SortingValues sortingValues) { var routeValues = new RouteValueDictionary(new {sortBy = column.Name, searchBy = sortingValues.SearchBy, searchValue = sortingValues.SearchValue}); if(column.IsSorted) routeValues.Add("sortdirection", column.SortDirection.Opposite()); return new UrlHelper(controllerContext.RequestContext).Action(controllerContext.RouteData.GetRequiredString("action"), routeValues); }
public static System.Web.WebPages.HelperResult RenderListColumn(this HtmlHelper htmlHelper, ListColumn column) { return new System.Web.WebPages.HelperResult(__razor_helper_writer => { #line 12 "..\..\Views\ListManage\Helpers.cshtml" if (column.HasHeaderTemplate) { htmlHelper.RenderPartial(column.HeaderTemplate, column); } else { #line default #line hidden WebViewPage.WriteLiteralTo(@__razor_helper_writer, " <th "); #line 19 "..\..\Views\ListManage\Helpers.cshtml" WebViewPage.WriteTo(@__razor_helper_writer, SortClass(column)); #line default #line hidden WebViewPage.WriteLiteralTo(@__razor_helper_writer, ">\r\n <a href=\""); #line 20 "..\..\Views\ListManage\Helpers.cshtml" WebViewPage.WriteTo(@__razor_helper_writer, column.SortUrl); #line default #line hidden WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\">"); #line 20 "..\..\Views\ListManage\Helpers.cshtml" WebViewPage.WriteTo(@__razor_helper_writer, column.DisplayName); #line default #line hidden WebViewPage.WriteLiteralTo(@__razor_helper_writer, "</a>\r\n </th>\r\n"); #line 22 "..\..\Views\ListManage\Helpers.cshtml" } #line default #line hidden }); }
public static System.Web.WebPages.HelperResult SortClass(ListColumn column) { return new System.Web.WebPages.HelperResult(__razor_helper_writer => { #line 25 "..\..\Views\ListManage\Helpers.cshtml" if (column.IsSorted) { #line default #line hidden WebViewPage.WriteLiteralTo(@__razor_helper_writer, " "); WebViewPage.WriteLiteralTo(@__razor_helper_writer, "class=\""); #line 28 "..\..\Views\ListManage\Helpers.cshtml" WebViewPage.WriteTo(@__razor_helper_writer, column.SortDirection.GetValueOrDefault().ToString().ToLower()); #line default #line hidden WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\"\r\n"); #line 29 "..\..\Views\ListManage\Helpers.cshtml" } #line default #line hidden }); }