Skip to content

Commit 4f4e991

Browse files
committed
Corrected issue with paging counts
1 parent b136028 commit 4f4e991

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

Mvc.JQuery.Datatables/DataTablesFilter.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,7 @@ public IQueryable FilterPagingSortingSearch(DataTablesParam dtParameters, IQuery
4848
}
4949

5050
data = data.OrderBy(sortString);
51-
data = data.Skip(dtParameters.iDisplayStart);
52-
if (dtParameters.iDisplayLength > -1)
53-
{
54-
data = data.Take(dtParameters.iDisplayLength);
55-
}
51+
5652

5753
return data;
5854
}

Mvc.JQuery.Datatables/DataTablesResult.cs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ public class DataTablesResult<T> : DataTablesResult
4141
{
4242

4343
}
44+
45+
46+
4447
public class DataTablesResult<T, TRes> : DataTablesResult<TRes>
4548
{
4649
private readonly Func<T, TRes> _transform;
@@ -90,24 +93,29 @@ private DataTablesData GetResults(IQueryable<T> data, DataTablesParam param, Tup
9093
var filters = new DataTablesFilter();
9194

9295

93-
var dataArray = data.Select(_transform).AsQueryable();
94-
dataArray = filters.FilterPagingSortingSearch(param, dataArray, searchColumns).Cast<TRes>();
95-
96+
var filteredData = data.Select(_transform).AsQueryable();
97+
filteredData = filters.FilterPagingSortingSearch(param, filteredData, searchColumns).Cast<TRes>();
98+
99+
var page = filteredData.Skip(param.iDisplayStart);
100+
if (param.iDisplayLength > -1)
101+
{
102+
page = page.Take(param.iDisplayLength);
103+
}
104+
96105
var type = typeof(TRes);
97106
var properties = type.GetProperties();
98107

99-
var toArrayQuery = from i in dataArray
108+
var transformedPage = from i in page
100109
let pairs = properties.Select(p => new {p.PropertyType, Value = (p.GetGetMethod().Invoke(i, null))})
101110
let values = pairs.Select(p => GetTransformedValue(p.PropertyType, p.Value))
102111
select values;
103112

104-
IEnumerable<object>[] aaData = toArrayQuery.ToArray();
105113
var result = new DataTablesData
106114
{
107115
iTotalRecords = totalRecords,
108-
iTotalDisplayRecords = aaData.Length,
116+
iTotalDisplayRecords = filteredData.Count(),
109117
sEcho = param.sEcho,
110-
aaData = aaData
118+
aaData = transformedPage.ToArray()
111119
};
112120

113121
return result;

0 commit comments

Comments
 (0)