物品是不可取的在剑道网格组

时间:2017-10-20 05:05:15

标签: javascript kendo-ui telerik kendo-grid kendo-asp.net-mvc

这是我声明我的剑道网格的方式

    @(Html.Kendo().Grid<LogModel>()
        .Name("ChangeLog")
        .Columns(columns =>
        {
            columns.Bound(m => m.dateTimeChangeDate)
                 .ClientGroupHeaderTemplate("#=console.log(items)#")
                .Title("Date and Time")
                .ClientTemplate("#= ChangeDate#")
                .Width("12%");
            columns.Bound(m => m.Component)
                .Title("Component")
                .Width("8%")
                .Filterable(filterable => filterable.UI("componentFilter")
                .Extra(false)
                .Operators(operators => operators
                    .ForString(str => str.Clear()
                    .Contains("Contains")
                 ))
            );
            columns.Bound(m => m.Action)
                .Title("Action")
                .Width("15%")
                .Filterable(filterable => filterable
                    .UI("actionFilter")
                    .Extra(false)
                    .Operators(operators => operators
                        .ForString(str => str.Clear()
                        .Contains("Contains")
                    ))
                 );
            columns.Bound(m => m.Changer)
                .Title("Changer")
                .Width("10%");
            columns.Bound(m => m.Identifier)
                .Title("On")
                .Width("15%");
            columns.Bound(m => m.OldValue)
                .Title("Old Value")
                .Width("20%");
            columns.Bound(m => m.NewValue)
                .Title("New Value")
                .Width("20%");
        })
        .Filterable()
        .Selectable()
        .Sortable()
        .Groupable()
        .Resizable(resize => resize.Columns(true))
        .ToolBar(toolbar =>
        {
        toolbar.Template(
            @<text>
                @*
                    The year is 2017, kendo does not have a realiable html server control for the excel button when we are using a template.
                    So we have to explicitly use the excel export command button mark up. Kendo will recoginze the k-grid-excel CSS class and configure it accoridngly.
                *@
                <a class="k-button k-button-icontext k-grid-excel" href="#"><span class="k-icon k-i-excel"></span>Export to Excel</a>
                <span style='padding-left:35%;font-weight:bold;padding-top:7px'>@ViewBag.ProjectNumber</span>
                <span style='float:right;font-weight:bold;padding-top:7px'>Total: <span id="change-log-record-count">@ViewBag.ChangeLogRecordAmount</span> records</span>

            </text>
            );
        })
        .Excel(excel => excel.AllPages(true).FileName(@ViewBag.ChangeLogType + " Change Log " + @ViewBag.ProjectNumber + ".xlsx").Filterable(true))
        .DataSource(dataSource => dataSource
             .Ajax()
             .Model(model =>
             {
                 model.Id(p => p.Id);
             })
             .Read(read => read.Action("FetchChangeLogData", "ChangeLog")
             .Data(".buildParam"))
       )
       .Events(e => e.FilterMenuInit("eresizeFilter")
                     .ExcelExport("modifyFormatForExcel")
                     .DataBound("preselectCustomFilter"))
       .ClientDetailTemplateId("change-log-details-template")
)

根据此链接for kendo grid documentation,我可以在模板中使用字段列表,items就是其中之一。但是当我尝试对网格进行分组时,我得到一个items未定义的错误。我也试过组,它也是未定义的。我尝试了valuefield,但这些工作正常。是否有我遗漏的东西或这个功能还没有完全实现。

更新 以下是基于链接演示的示例。我稍微修改它作为POC来演示that you can inspect items. 我知道他们使用的是Kendo UI,而我正在使用UI进行ASP.NET MVC,但除非这样做,否则这应该很重要。

更新#2 看起来只有valuefield正在处理聚合,而items字段未定义。

更新#3 似乎.ClientGroupHeaderTemplate可能还没有完全实现,因为他们的文档提到ClientGroupFooterTemplate而不是另一个。

更新#4 将聚合字段count添加到数据源后,我现在可以在模板中访问它。

.DataSource(dataSource => dataSource
             .Ajax()
             .Model(model =>
             {
                 model.Id(p => p.Id);
             })
             .Aggregates(aggregates =>
             {
                aggregates.Add(p => p.dateTimeChangeDate).Count();
             })
             .Read(read => read.Action("FetchChangeLogData", "ChangeLog")
             .Data("buildParam"))
       )

Check documentation here

2 个答案:

答案 0 :(得分:2)

正如我在评论中提到的,我不认为你已经明白了什么&#34;项目&#34;代表。在您的示例中,如果您设置

groupHeaderTemplate: "Admin count: #=items[0].name#"

您的标题将正确显示&#34;管理员计数:Jane Doe&#34;。变量&#34; items&#34;是对绑定数据的引用。这意味着它是一个对象列表。 如果你写项目[1] .age它将显示30等。

如果您希望将行数显示为&#34; Admin count&#34;建议你可以使用

groupHeaderTemplate: "Admin count: #=items.length#"

如果您想使用项目而不是计数聚合。

通过这种方式,应该更容易理解如何准确处理变量&#34; items&#34;为了展示你需要展示的东西。

现在,如果您有任何其他问题需要解释,请问您希望在标题中显示什么内容?

答案 1 :(得分:1)

这对我来说很有用:

groupHeaderTemplate: "Admin count: #=count#"

尝试

.ClientGroupHeaderTemplate("#=count#")