Условное связывание на основе флага
У меня есть Kendo-UI Grid с источником данных AJAX. Я работаю с ASP.NET-MVC.
Модель выглядит так:
public class QuestionModelPlayer
{
public Guid Id { get; set; }
public String Description { get; set; }
public string TextAnswer { get; set; }
public int? NummericAnswer { get; set; }
public bool isTextQuestion { get; set; }
}
Если бул IsTextQuestion
это правда, я хочу, чтобы пользователи имели текстовое поле Incell, которое привязывается к полю TextAnswer
, Если значение равно false, я хочу привязать его к NummericAnswer
имущество.
Как я могу это сделать? Я думаю, что мне нужно использовать шаблон или ClientTemplate?
1 ответ
Согласно документации Telerik:
Если сетка привязана к ajax, используйте метод ClientTemplate. Значение должно быть строкой, которая представляет действительный шаблон кендо.
Пара фрагментов, взятых из их документа и примерно адаптированных к вашей ситуации (но не проверенных!), Показывают, как это можно сделать. Сначала как некоторый встроенный код JavaScript:
columns.Bound(q => q.isTextQuestion)
.ClientTemplate (
"# if (isTextQuestion == true) { #" +
"#: TextAnswer #" +
"# } else { #" +
"#: NummericAnswer #" +
"# } #"
);
или в качестве альтернативы, вызывая функцию JavaScript:
columns.Bound(q => q.isTextQuestion)
.ClientTemplate("#= getAnswer(data) #");
<script>
function getAnswer(question) {
var html = kendo.format( "<text>{0}</text>"
,question.isTextQuestion
? question.TextAnswer
: question.NummericAnswer
);
return html;
}
</script>
Проверьте пункт часто задаваемых вопросов Grid: часто задаваемые вопросы: отображение значений для множества других примеров.