在KendoUI中使用kendo.template(外部模板)MVC Grid ClientTemplate(列)

时间:2015-07-04 07:16:42

标签: asp.net-mvc templates kendo-ui kendo-grid

我想在列的ClientTemplate中使用外部模板,如下所示:

   df <- data.frame(F)
   row.names(df)

但我得到一个空栏。

如果我使用内部(内联)模板,它可以正常工作:

@(Html.Kendo().Grid<Project>().Name("Projects").Columns(
    cols =>
    {
        cols.Bound(m => m.LetterNumber);
        cols.Bound(m => m.CityName);
        cols.Bound(m => m.OrganName);
        cols.Bound(m => m.DateString);
        cols.Bound(m => m.EngineersCount);
        cols.Bound(m => m.ExpertTypeString);
        cols.Bound(m=>m.ProjectId).Title("").ClientTemplate("#buttonsTemplate(data)#");
    }).DataSource(
         ds => ds.Ajax().Read("GetList", "Projects"))
)


<script type="kendo/x-template" id="buttonsTempate">
    #switch(State){
    case 0:#
        <a href="@Url.Action("SelectEngineers")?pid=#=ProjectId#">انتخاب مهندسین</a>
    #break;
    case 1:#
        <a href="@Url.Action("Print")?pid=#=ProjectId#">چاپ نامه</a>
        <a href="@Url.Action("SelectEngineers")?pid=#=ProjectId#">انتخاب مهندسین</a>
    #break;
    }#
</script>

<script>
    var buttonsTemplate = kendo.template($("#buttonsTempate").html());
</script>

但我更喜欢外部模板这么长的模板。不知道是什么问题?

1 个答案:

答案 0 :(得分:2)

kendo.template()创建的外部模板实际上是具有data输入参数的函数。因此,在您的模板中,您应该在data.之前添加所有列,例如:

<a href="@Url.Action("SelectEngineers")?pid=#=data.ProjectId#">

此外,在网格选项中,您应该使用#=语法来查看输出:

.ClientTemplate("#=buttonsTemplate(data)#")
相关问题