基于标志的条件绑定

时间:2015-09-03 08:28:43

标签: c# asp.net-mvc kendo-grid kendo-ui-mvc

我有一个带有AJAX数据源的Kendo-UI网格。 我正在使用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; }
}

如果bool IsTextQuestion为true,我希望用户有一个与字段TextAnswer绑定的incell文本框。如果值为false,我想将其绑定到NummericAnswer属性。

我该怎么做? 我想我需要使用Template或ClientTemplate吗?

1 个答案:

答案 0 :(得分:4)

根据Telerik文件:

  

如果网格是ajax绑定,请使用ClientTemplate方法。该值应为表示有效Kendo模板的字符串。

来自他们的doco的几个片段大致适应了你的情况(但没有经过测试!)显示它是如何完成的。首先作为一些内联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 Frequently Asked Questions: Displaying Values以获取更多示例。