Grid中的kendoui ClientTemplate在asp.net mvc 4中不起作用

Posted

技术标签:

【中文标题】Grid中的kendoui ClientTemplate在asp.net mvc 4中不起作用【英文标题】:kendoui ClientTemplate in Grid not working in asp.net mvc 4 【发布时间】:2013-06-12 23:16:50 【问题描述】:

我一直在寻找答案,并认为我缺少一些简单的东西。我有一个剑道网格,我希望其中一列是指向另一个页面的链接,其中 id 作为路由参数。但是,列单元格中的值是绑定值,并且我的模板不会更改。对此的任何见解将不胜感激。

@(html.Kendo().Grid((IEnumerable<ProviderAccess>)Model.Providers)
.Name("grants-grid")
.Columns(columns =>

    columns.Bound(a => a.ProviderName);
    columns.Bound(a => a.HasAccess);
    columns.Bound(a => a.ProviderId).ClientTemplate("#= toggleLink(data) #");
)
.Scrollable()
)

<script>
function toggleLink(access) 
    var action = '@Url.Action("Toggle", "Access")';

    var html = kendo.format("<a href='0/1'>Toggle...</a>",
        action,
        access.ProviderId
    );

    return html;

</script>

【问题讨论】:

【参考方案1】:

当 Kendo Grid 像您的代码一样绑定到服务器端的数据源时,ClientTemplate 不使用。

你应该使用如下列的模板方法

 columns.Template(p => "<a href='..../Toggle/Access/" + p.ProviderId + "'>Click</a>");

【讨论】:

【参考方案2】:

dataSource.Server() 将允许您使用 custom.template

dataSource.Ajax() 将让您使用 ClientTemplate

弄清楚这一点真的很令人沮丧......它们不可互换,其中一个将根据 ajax 或服务器工作

              <%: Html.Kendo().Grid((List<RadCarePlus.V2.Web.Models.GetMeSomeData>) ViewData["Mydata"])
                .Name("Grid")
                .Columns(columns =>
                
                    columns.Template(c => "<a href='ImplementationDetails?EpisodeID=" + c.EpisodeID + "'>" + c.EpisodeID + "</a>").Title("Testing").Width(140);
                    //columns.Bound(c => c.EpisodeID).Width(140);
                    columns.Bound(c => c.AuthStatus).Width(190);
                    columns.Bound(c => c.CPTCode).Width(100);
                    columns.Bound(c => c.inscarrier).Width(110);
                    columns.Bound(c => c.CreatedOn).Width(160);
                    //columns.Template(c => "<a href='ImplementationDetails?EpisodeID=" + c.EpisodeID + "'>" + c.EpisodeID + "</a>");
                    //columns.Template(c => c.EpisodeID).Title("Testing").ClientTemplate("<a href='ImplementationDetails?EpisodeID=#= EpisodeID#'>#= EpisodeID #</a>");
                )
                .Pageable(pageable=> pageable.ButtonCount(5))
                .Sortable(sortable => sortable.AllowUnsort(false))
                .DataSource(dataSource => dataSource.Server().PageSize(5)
                )

            %>

【讨论】:

确实令人沮丧。感谢您澄清为什么上面接受的模板列类型的答案对我有用,但在绑定列上使用 ClientTemplate 的 Kendo Document 示例似乎对他们有用。

以上是关于Grid中的kendoui ClientTemplate在asp.net mvc 4中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

KendoUI:Grid控件的使用

[转]KendoUI系列:Grid

KendoUI Grid 绑定单击双击事件

KendoUI关于Grid页面刷新赋值(不修改数据库)

KendoUi 学习笔记 Grid

kendoui的grid输入框怎么做输入限制