2015-07-04 4 views
0

Я хочу использовать внешний шаблон в ClientTemplate столбца, как это:использование kendo.template (внешний шаблон) в KendoUI MVC Сетка 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() 
) 

Но я предпочитаю внешний шаблон для такого длинного шаблона. Любая идея в чем проблема?

+0

Есть ли у вас попытался поместить шаблоны в шаблон редактора (View/Shared/EditorTemplates)? – Vanice

+0

Это не имеет смысла. Кроме того, работает ли шаблон сервера с привязкой ajax? – Mahmoodvcs

ответ

1

Внешние шаблоны, созданные kendo.template(), на самом деле являются функциями с входным параметром data. Так что в вашем шаблоне, вы должны предварять все столбцы с data., например:

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

Кроме того, в настройках сетки, вы должны использовать синтаксис #= для того, чтобы увидеть результат:

.ClientTemplate("#=buttonsTemplate(data)#") 
Смежные вопросы