or



<%=ViewHelper.CreateGridFromType<OverviewTopFiveModel>(this) .Name("DailyTopFive") .DataBinding(dataBinding => dataBinding.Ajax() .Select("AjaxDailyTopFive", "Home")) .Filterable() .Sortable() .ScrollBars(false)%>public static GridBuilder<TModel> CreateGridFromType<TModel>(ViewPage page) where TModel : class { // create the custom grid var component = (page.ViewContext.HttpContext.Items[StyleSheetRegistrar.Key] as StyleSheetRegistrar) ?? new StyleSheetRegistrar(new WebAssetCollection(WebAssetDefaultSettings.StyleSheetFilesPath), page.ViewContext, DI.Current.Resolve<IWebAssetCollectionResolver>()); var scriptWrapper = DI.Current.Resolve<ScriptWrapperBase>(); var registrar2 = (page.ViewContext.HttpContext.Items[ScriptRegistrar.Key] as ScriptRegistrar) ?? new ScriptRegistrar(new WebAssetCollection(WebAssetDefaultSettings.ScriptFilesPath), new List<IScriptableComponent>(), page.ViewContext, DI.Current.Resolve<IWebAssetCollectionResolver>(), scriptWrapper); var test = new CustomViewComponentFactory(page.Html, DI.Current.Resolve<IClientSideObjectWriterFactory>(), ComponentBuilderBase<StyleSheetRegistrar, StyleSheetRegistrarBuilder>.Create(component), ComponentBuilderBase<ScriptRegistrar, ScriptRegistrarBuilder>.Create(registrar2)); var cGrid = test.Grid<TModel>(); var grid = new GridBuilder<TModel>(cGrid); // create the columns grid.Columns(CreateGridColumnsFromType(grid)); // hook internal events grid.ClientEvents(e => e.OnLoad("onInternalGridLoad")); grid.ClientEvents(e => e.OnDataBinding("onInternalGridDataBinding")); grid.ClientEvents(e => e.OnDataBound("onInternalGridDataBound")); grid.ClientEvents(e => e.OnDetailViewExpand("onInternalGridDetailViewExpand")); grid.ClientEvents(e => e.OnDetailViewCollapse("onInternalGridDetailViewCollapse")); grid.ClientEvents(e => e.OnRowDataBound("onInternalRowDataBound")); grid.ClientEvents(e => e.OnCommand("onInternalGridCommand")); return grid; }