public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { DataTablesFilter model = base.BindModel(controllerContext, bindingContext) as DataTablesFilter; if (model != null) { model.Echo = GetValue(controllerContext, "sEcho"); model.Search = GetValue(controllerContext, "sSearch"); int size = 0; if (int.TryParse(GetValue(controllerContext, "iDisplayLength"), out size)) { model.PageSize = size; } int index = 0; if (int.TryParse(GetValue(controllerContext, "iDisplayStart"), out index)) { model.PageIndex = index / size + 1; } int columns = 0; model.Fields = new List <string>(); if (int.TryParse(GetValue(controllerContext, "iColumns"), out columns)) { for (int i = 0; i < columns; ++i) { model.Fields.Add(GetValue(controllerContext, "mDataProp_" + i)); } } int sortColumn = 0; if (int.TryParse(GetValue(controllerContext, "iSortCol_0"), out sortColumn)) { model.SortFieldIndex = sortColumn; } model.SortDirection = string.Compare("asc", GetValue(controllerContext, "sSortDir_0")) == 0 ? SortDirection.Ascending : SortDirection.Descending; } return(model); }
protected override void SetupFilter(ControllerContext ctx, IEnumerable<string> propertyNames) { RecordFilter = new DataTablesFilter(); RecordFilter.Initialize(ctx.HttpContext.Request, propertyNames); }
public JsonResult GetTableData(DataTablesFilter filter) { List <Form> data = new List <Form>() { new Form() { InstanceCode = "0122313113", ApplyDate = "2015-10-12", ApplyEmpCode = "12121212" }, new Form() { InstanceCode = "0122313113", ApplyDate = "2015-10-12", ApplyEmpCode = "12121212" }, new Form() { InstanceCode = "0122313113", ApplyDate = "2015-10-12", ApplyEmpCode = "12121212" }, new Form() { InstanceCode = "0122313113", ApplyDate = "2015-10-12", ApplyEmpCode = "12121212" }, new Form() { InstanceCode = "0122313113", ApplyDate = "2015-10-12", ApplyEmpCode = "12121212" }, new Form() { InstanceCode = "0122313113", ApplyDate = "2015-10-12", ApplyEmpCode = "12121212" }, new Form() { InstanceCode = "0122313113", ApplyDate = "2015-10-12", ApplyEmpCode = "12121212" }, new Form() { InstanceCode = "0122313113", ApplyDate = "2015-10-12", ApplyEmpCode = "12121212" }, new Form() { InstanceCode = "0122313113", ApplyDate = "2015-10-12", ApplyEmpCode = "12121212" }, new Form() { InstanceCode = "0122313113", ApplyDate = "2015-10-12", ApplyEmpCode = "12121212" }, new Form() { InstanceCode = "0122313113", ApplyDate = "2015-10-12", ApplyEmpCode = "12121212" }, new Form() { InstanceCode = "0122313113", ApplyDate = "2015-10-12", ApplyEmpCode = "12121212" }, new Form() { InstanceCode = "0122313113", ApplyDate = "2015-10-12", ApplyEmpCode = "12121212" }, }; return(Json(new { //draw = 1, recordsFiltered = data.Count, //error = recordsTotal = data.Count, data = data.Skip(filter.iDisplayStart).Take(filter.PageSize).ToList() }, JsonRequestBehavior.AllowGet)); }
private T Bind <T>(IValueProvider valueProvider, T model) where T : DataTablesFilter { var dataTablesParam = new DataTablesParameters { iDisplayStart = GetValue <int>(valueProvider, "start"), iDisplayLength = GetValue <int>(valueProvider, "length"), sSearch = GetValue <string>(valueProvider, "search[value]"), bEscapeRegex = GetValue <bool>(valueProvider, "search[regex]"), sEcho = GetValue <int>(valueProvider, "draw") }; var columnIndex = 0; while (true) { var column = string.Format("columns[{0}]", columnIndex); var data = GetValue <string>(valueProvider, column + "[data]"); if (data != null) { var name = GetValue <string>(valueProvider, column + "[name]"); dataTablesParam.sColumnNames.Add(name.IsNotNullOrWhiteSpace() ? name : data); dataTablesParam.bSortable.Add(GetValue <bool>(valueProvider, column + "[orderable]")); dataTablesParam.bSearchable.Add(GetValue <bool>(valueProvider, column + "[searchable]")); dataTablesParam.sSearchValues.Add(GetValue <string>(valueProvider, column + "[search][value]")); dataTablesParam.bEscapeRegexColumns.Add(GetValue <bool>(valueProvider, column + "[searchable][regex]")); ++columnIndex; } else { break; } } dataTablesParam.iColumns = columnIndex; var orderIndex = 0; while (true) { var order = string.Format("order[{0}]", orderIndex); var nullable = GetValue <int?>(valueProvider, order + "[column]"); if (nullable.HasValue) { dataTablesParam.iSortCol.Add(nullable.Value); dataTablesParam.sSortDir.Add(GetValue <string>(valueProvider, order + "[dir]")); ++orderIndex; } else { break; } } for (var filterIndex = 0; filterIndex < dataTablesParam.iColumns; filterIndex++) { var filter = string.Format("filteringItems[{0}]", filterIndex); var filteredItem = GetValue <string>(valueProvider, filter); if (filteredItem.IsNotNullOrWhiteSpace()) { dataTablesParam.RangedFilteredItems.Add(dataTablesParam.sColumnNames.ElementAt(filterIndex), filteredItem); } } dataTablesParam.iSortingCols = orderIndex; return(DataTablesFilter.PopulateFrom(model, dataTablesParam)); }