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 virtual 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 = CreateActionResult(result); }
public void OnActionExecuted(ActionExecutedContext filterContext) { if (filterContext.HttpContext.Request.IsAjaxRequest() && (filterContext.Result is ViewResultBase)) { ViewResultBase actionResult = filterContext.Result as ViewResultBase; IGridModel model = actionResult.ViewData.Model as IGridModel; if (model == null) { return; } GridActionBindingContext context = new GridActionBindingContext(EnableCustomBinding, filterContext.Controller, model.Data, model.Total); GridDataProcessor dataProcessor = new GridDataProcessor(context); filterContext.Result = new JsonResult { Data = new { data = dataProcessor.ProcessedDataSource, total = dataProcessor.Total } }; } }