mvc3, telerik mvc 2011.2.712
У меня есть сетка с DetailView.В DetailView у меня есть другая сетка в ClientTemplate DetailView.Во вложенной сетке мне нужно указать общее количество записей для подкачки.Количество записей - это один из столбцов в основной сетке, поэтому я могу получить к нему доступ через этот синтаксис "<#= NumPackages #>"
.Проблема в том, что paging.Total
принимает один параметр типа int.Я попробовал следующее:
paging.Total(int.Parse("<#= NumPackages #>"))
, но, конечно, это не сработало, потому что во время выполнения Parse выражение "<#= NumPackages #>"
еще не оценивалось.На данный момент единственный вариант, который я вижу, это просто вернуть все записи и позволить сетке вычислить итоговое значение.Максимальное количество записей будет только 99, так что это выполнимо.Я бы даже не беспокоился об этом, но запрос, который получает данные, является очень сложным и, таким образом, проходит через несколько секунд.Кто-нибудь знает, как получить NumRecords
из основной сетки и передать ее на страницу подкачки. Итого дочерней сетки?
Вот мое определение сетки:
<% Html.Telerik().Grid<DtsWeb.Models.District.DistrictSearchResultItem>()
.Name("OriginationGrid")
.DataBinding(db => db.Ajax()
.Select("DistrictOriginationSelect", "District")
)
.DataKeys(key => key.Add(e => e.ID))
.Columns(col => {
col.Bound(c => c.CreationDate);
col.Bound(c => c.CreatedBy);
col.Bound(c => c.ShipTo);
col.Bound(c => c.NumPackages);
col.Bound(c => c.LabelComment);
col.Bound(c => c.UserComment);
col.Bound(c => c.ID).ClientTemplate("<button id='<#= ID #>' onclick='editOrigination(<#= ID #>)'>Edit</button>").Title("");
})
.DetailView(details => details.ClientTemplate(
Html.Telerik().Grid<DtsWeb.Models.District.PackageDeliveryItem>()
.Name("Package_<#= ID #>")
.DataBinding(dbp => dbp.Ajax()
.Select("OriginationPackages", "District", new { originationID = "<#= ID #>" })
)
.Pageable(paging => paging.Total(int.Parse("<#= NumPackages #>")).PageSize(10))
.ToHtmlString()
))
.Pageable(paging => paging.PageSize(25))
.Sortable(sort => sort.OrderBy(c => c.Add(e => e.CreationDate)))
.Render();
%>
В процессеПосле прочтения моего вопроса мне пришло в голову, что я могу найти решение с помощью клиентских событий.Я опубликую этот вопрос как есть и обновлю его, если найду решение.