public void ApplyDataFilter(IDataFilter dataFilter, string controller, string view, string lookupContextController, string lookupContextView, string lookupContextFieldName) { if (dataFilter == null) { return; } if (_filter == null) { _filter = new string[0]; } IDataFilter2 dataFilter2 = null; if (typeof(IDataFilter2).IsInstanceOfType(dataFilter)) { dataFilter2 = ((IDataFilter2)(dataFilter)); dataFilter2.AssignContext(controller, view, lookupContextController, lookupContextView, lookupContextFieldName); } List <string> newFilter = new List <string>(_filter); _customFilter = new SortedDictionary <string, object>(); if (dataFilter2 != null) { dataFilter2.Filter(controller, view, _customFilter); } else { dataFilter.Filter(_customFilter); } foreach (string key in _customFilter.Keys) { object v = _customFilter[key]; if ((v == null) || !(v.GetType().IsArray)) { v = new object[] { v } } ; StringBuilder sb = new StringBuilder(); sb.AppendFormat("{0}:", key); foreach (object item in ((Array)(v))) { if (dataFilter2 != null) { sb.Append(item); } else { sb.AppendFormat("={0}", item); } sb.Append(Convert.ToChar(0)); } newFilter.Add(sb.ToString()); } _originalFilter = _filter; _filter = newFilter.ToArray(); }
public virtual JsonResult LoadPageItems(DTParameters param) { var filtered = DataFilter.Filter <TEntity, TOperationContext>(IoC.Resolve <TOperationContext>(), param.Search.Value, param.SortOrder, param.Start, param.Length, out var totalCount).ToList(); var finalResult = new DTResult <TEntity> { Draw = param.Draw, Data = filtered.ToList(), RecordsFiltered = totalCount, RecordsTotal = filtered.Count }; return(Json(finalResult)); }