/// <summary> /// Initializes a new instance of the <see cref="Grid{T}"/> class. /// </summary> /// <param name="viewContext">The view context.</param> /// <param name="clientSideObjectWriterFactory">The client side object writer factory.</param> /// <param name="urlGenerator">The URL generator.</param> /// <param name="builderFactory">The builder factory.</param> public Grid(ViewContext viewContext, IClientSideObjectWriterFactory clientSideObjectWriterFactory, IUrlGenerator urlGenerator, ILocalizationService localizationService, IGridHtmlBuilderFactory htmlBuilderFactory) : base(viewContext, clientSideObjectWriterFactory) { this.htmlBuilderFactory = htmlBuilderFactory; UrlGenerator = urlGenerator; PrefixUrlParameters = true; RowTemplate = new HtmlTemplate <T>(); DataProcessor = new GridDataProcessor(this); Columns = new List <GridColumnBase <T> >(); DataKeys = new List <IGridDataKey <T> >(); Paging = new GridPagingSettings(this); Sorting = new GridSortSettings(this); Scrolling = new GridScrollingSettings(); KeyboardNavigation = new GridKeyboardNavigationSettings(this); ColumnContextMenu = new GridColumnContextMenuSettings(this); Filtering = new GridFilteringSettings(); Editing = new GridEditingSettings <T>(this) { PopUp = new Window(viewContext, clientSideObjectWriterFactory, new WindowHtmlBuilderFactory()) { Modal = true, Draggable = true } }; Grouping = new GridGroupingSettings(this); Resizing = new GridResizingSettings(); Reordering = new GridReorderingSettings(); TableHtmlAttributes = new RouteValueDictionary(); DataBinding = new GridDataBindingSettings(this); Footer = true; IsEmpty = true; ClientEvents = new GridClientEvents(); Selection = new GridSelectionSettings(); ScriptFileNames.AddRange(new[] { "telerik.common.js", "telerik.grid.js" }); ToolBar = new GridToolBarSettings <T>(this); Localization = new GridLocalization(localizationService, CultureInfo.CurrentUICulture); NoRecordsTemplate = new HtmlTemplate(); ValidationMetadata = new Dictionary <string, object>(); AutoGenerateColumns = true; }
public GridDataProcessorTests() { valueProvider = new Dictionary<string, ValueProviderResult>(); context = new Mock<IGridBindingContext>(); context.Setup(c => c.Prefix(GridUrlParameters.OrderBy)).Returns(GridUrlParameters.OrderBy); context.Setup(c => c.Prefix(GridUrlParameters.GroupBy)).Returns(GridUrlParameters.GroupBy); context.Setup(c => c.Prefix(GridUrlParameters.CurrentPage)).Returns(GridUrlParameters.CurrentPage); context.Setup(c => c.Prefix(GridUrlParameters.Filter)).Returns(GridUrlParameters.Filter); context.Setup(c => c.Prefix(GridUrlParameters.Aggregates)).Returns(GridUrlParameters.Aggregates); context.Setup(c => c.Prefix(GridUrlParameters.PageSize)).Returns(GridUrlParameters.PageSize); context.Setup(c => c.GroupDescriptors).Returns(() => new List<GroupDescriptor>()); context.Setup(c => c.SortDescriptors).Returns(() => new List<SortDescriptor>()); context.Setup(c => c.FilterDescriptors).Returns(() => new CompositeFilterDescriptor[] { }); context.SetupGet(c => c.Controller).Returns(new ControllerTestDouble(valueProvider, new ViewDataDictionary())); context.Setup(c => c.PageSize).Returns(10); dataProcessor = new GridDataProcessor(context.Object); }
public void OnActionExecuted(ActionExecutedContext filterContext) { if (!filterContext.HttpContext.Request.IsAjaxRequest()) { return; } var actionResultAdapter = adapterFactory.Create(filterContext.Result); if (actionResultAdapter == null) { return; } var dataSource = actionResultAdapter.GetDataSource(); if (dataSource == null) { return; } var total = actionResultAdapter.GetTotal(); var dataProcessor = new GridDataProcessor(new GridActionBindingContext(EnableCustomBinding, filterContext.Controller, dataSource, total)); var result = new Dictionary<string, object>(); var dataTableEnumerable = dataSource as GridDataTableWrapper; if (dataTableEnumerable != null && dataTableEnumerable.Table != null) { result["data"] = dataProcessor.ProcessedDataSource.SerializeToDictionary(dataTableEnumerable.Table); } else { result["data"] = dataProcessor.ProcessedDataSource; } result["total"] = dataProcessor.Total; var modelState = actionResultAdapter.GetModelState(); if (modelState != null && !modelState.IsValid) { result["modelState"] = SerializeErrors(modelState); } if (EnableCustomBinding) { var aggregates = actionResultAdapter.GetAggregates(); if (aggregates != null) { result["aggregates"] = aggregates; } } else { SerializeAggregateResults(result, dataProcessor.AggregatesResults); } filterContext.Result = resultFactory.Create(result); }