2014-12-30 2 views
1

Можно ли использовать шаблон строки в сетке пользовательского интерфейса Kendo только в том случае, если выполнено конкретное условие (например, поле в этой строке, имеющее конкретное значение)? Если это условие не выполняется, оно не должно отображать шаблон и вместо этого просто выводить строку нормально.условный шаблон kendo ui

Я не хочу указывать условие внутри самого шаблона, потому что, если я ошибаюсь, мне также нужно будет включить «определение по умолчанию» html в определении шаблона, если условие не выполняется.

Вот пример того, чего я пытаюсь достичь, что не работает. Для краткости я ушел из других свойств сетки, которые не имеют отношения к моему вопросу:

$("#divGrid").kendoGrid({ 
    rowTemplate: function (data) { 
     if (condition) kendo.template($("#myRowTemplate").html(data)); 
     // else render row without the template, but how? 
    } 
}); 

ответ

1

Прежде всего, kendo.template возвращает Функция, которая должна быть вызвана (с данными шаблона в качестве аргумента) в чтобы вернуть HTML-код. Так, для примера, чтобы работать он должен быть изменен следующим образом:

$("#divGrid").kendoGrid({ 
    rowTemplate: function (data) { 
     if (condition) { 
      return kendo.template($("#myRowTemplate").html())(data); 
     } // else render row without the template, but how? 
    } 
}); 

Сейчас, к сожалению, есть не существует способа «визуализации строки обычно», как вы уже определили rowTemplate функцию. Можно указать только шаблон (или строку), которая должна отображаться в еще условии:

$("#divGrid").kendoGrid({ 
    rowTemplate: function (data) { 
     if (condition) { 
      return kendo.template($("#myRowTemplate").html())(data); 
     } else { 
      return '<tr>Normal row</tr>'; 
      // or return kendo.template($("#myRowTemplate2").html())(data) 
      // or return "<tr>" + data.name + ": " + data.age + "</tr>" 
     } 
    } 
}); 

Надеется, что это помогает.

+0

Это несчастливо, но спасибо за ваш ответ и за устранение проблемы с отсутствующим параметром. Отметьте это как правильный ответ. – aw1975

Смежные вопросы