Группировка Kendo на стороне сервера
Я использую Asp net 5, NHibernate 3.3 и оболочку Kendo UI MVC для сетки, чтобы визуализировать таблицу заказов клиентов. В базе уже много заказов, и их количество постоянно растет. Поэтому я решил использовать подкачку на стороне сервера, чтобы не получать все заказы из базы данных. Насколько я знаю, вы не можете делать пейджинг вручную и делегировать фильтрацию, сортировку и группировку методу ToDataSourceResult. Это либо все, либо ничего. Поэтому я предпринял попытку реализовать так называемые«пользовательская привязка», Нет проблем, пока я не доберусь до группировки. Мне нужно сначала сгруппировать, затем отсортировать внутри группы, затем извлечь данные для конкретной страницы и все это без загрузки всех данных в память. Мой код выглядит примерно так (я собрал все в один кусок, чтобы упростить чтение):
var orderList = CurrentSession.QueryOver<Order>();
// Filtering. Filter is a search string obtained from DataSourceRequest
var disjunction = new Disjunction();
disjunction.Add(Restrictions.On<Order>(e => e.Number).IsLike("%" + filter + "%"));
disjunction.Add(Restrictions.On<Order>(e => e.Customer).IsLike("%" + filter + "%"));
orderList = orderList.Where(disjunction);
// Sorting. sortColumn is also from DataSourceRequest
switch (sortColumn)
{
case "Number":
orderList = orderList.OrderBy(x => x.Number).Desc;
break;
case "GeneralInfo.LastChangeDate":
orderList = orderList.OrderBy(x => x.LastChangeDate).Desc;
break;
default:
orderList = orderList.OrderBy(x => x.Number).Desc;
break;
}
}
// Total is required for kendo grid when you do paging manually
var total = orderList.RowCount();
var orders = orderList
.Fetch(x => x.OrderGoods).Eager
.Fetch(x => x.OrderComments).Eager
.Fetch(x => x.Documents).Eager
.Fetch(x => x.Partner).Eager
.Skip((request.Page - 1)*request.PageSize).Take(request.PageSize).List();
Я буду рад получить любой совет о том, как добавить группировку здесь.