Условное связывание на основе флага

У меня есть 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: часто задаваемые вопросы: отображение значений для множества других примеров.

Другие вопросы по тегам