簡體   English   中英

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

[英]using kendo.template (external template) in KendoUI MVC Grid ClientTemplate (column)

我想像這樣在列的ClientTemplate中使用外部模板:

@(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>

但是我得到一個空列。

如果我使用內部(內聯)模板,則可以正常工作:

@(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("#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;}#");
        }).DataSource(
             ds => ds.Ajax().Read("GetList", "Projects")).DoConfig()
)

但是對於這樣長的模板,我更喜歡使用外部模板。 知道是什么問題嗎?

kendo.template()創建的外部模板實際上是帶有data輸入參數的函數。 因此,在模板中,您應該在所有列之前添加data. 例如:

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

另外,在網格選項中,應使用#=語法以查看輸出:

.ClientTemplate("#=buttonsTemplate(data)#")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM