Telerik MVC Grid - Отображение шаблона нижнего колонтитула клиента, только если количество строк> 0 - PullRequest
1 голос
/ 27 октября 2011

Я использую Telerik 2011 Q2 MVC Grid в своем приложении asp.net MVC3. На одной из моих страниц у меня есть таблица, и я пытаюсь отобразить нижний колонтитул в таблице. Сетка связана в режиме Ajax. Вот код, который я использую

@(Html.Telerik().Grid<MatrixDetail>()
            .Name("tlkLocalityMatrixGrid")
            .DataBinding(db => db.Ajax().Select("_LocalityMatrix", "Matrix"))

            .Columns(col => {
                col.Bound(m => m.Name).Title("Locality/BloodGroup").Width(200)
                                      .Sortable(false);
                col.Bound(m => m.A_PositiveCount).Title("A+ve")
                                      .Sortable(false);
...

                col.Bound(m => m.Total).Title("Total").Width(100).Aggregate(aggr => aggr.Sum())
                                       .ClientFooterTemplate("<# if(Count > 0) { $.telerik.formatString('{0:n}', Sum); } #>")
                                      .Format("{0:n}");}))

Как видно из кода, я пытаюсь отобразить агрегат (Всего) с помощью шаблона нижнего колонтитула клиента. Мое требование состоит в том, чтобы отображать итоговое значение только в том случае, если число строк в сетке больше 0. В противном случае итоговое значение в нижнем колонтитуле должно быть пустым. Поэтому я использовал «Счет» и «Сумма» для достижения функциональности. Когда я впервые загружаю сетку, она пуста, а нижний колонтитул «Итого» отображается пустым, как и ожидалось. Однако после того, как пользователь внес некоторые изменения, я перезагружаю сетку с данными, но JQuery жалуется, что "ReferenceError: Count не определено"

Как заставить ClientFooterTemplate отображать нижний колонтитул (в данном случае «Всего») только тогда, когда сетка имеет несколько строк. Если я указываю только «<#= Sum #>» в ClientFooterTemplate, то если в таблице нет строк, нижний колонтитул по-прежнему отображает 0.

1 Ответ

4 голосов
/ 28 октября 2011

Была пара вещей, с которыми у меня были проблемы. Во-первых, агрегат Count необходимо указать в col.Bound (m => m.Total) .Title ("Total"). Width (100) .Aggregate (aggr => aggr.Sum ()). Таким образом, после изменения вышеуказанной строки на

col.Bound(m => m.Total).Title("Total").Width(100).Aggregate(aggr => aggr.Sum().Count()) 

У меня была переменная Count в доступном javascript. Во-вторых, шаблон нижнего колонтитула клиента должен соответствовать указанному ниже.

.ClientFooterTemplate("<# if (Count > 0) {#>" + "<#= $.telerik.formatString('{0:n}', Sum) #>" + "<# } #>")

и все работает хорошо.

С уважением, Nirvan.

...