Условная привязка на основе флага

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

Как я могу это сделать? Я думаю, мне нужно использовать Template или ClientTemplate?


person dotcom ontwikkel    schedule 03.09.2015    source источник
comment
Вопросы StackOverflow предназначены не только для того, кто задает вопрос, но и для будущих читателей, которые найдут этот вопрос в Google. Таким образом, пожалуйста, не портите свой вопрос после того, как нашли решение; будущие читатели с таким же вопросом будут вам благодарны.   -  person Heinzi    schedule 14.09.2015


Ответы (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>

Просмотрите пункт часто задаваемых вопросов Часто задаваемые вопросы по сетке: отображение значений и множество других примеров.

person slugster    schedule 03.09.2015
comment
Спасибо !, это сделало работу - person dotcom ontwikkel; 11.09.2015