在剑道MVC网格中使用span作为列客户端模板

时间:2014-12-14 11:27:12

标签: asp.net-mvc kendo-grid kendo-asp.net-mvc

我使用Kendo grid MVC和第一列我使用此代码:

 columns.Template(s => s.IsActive).Title("").ClientTemplate(
                     " <input type='checkbox' \\#= IsActive ? checked='checked' : '' \\#   /input>"
                 ).Width(50);

并且它可以正常工作,但是当我想在跨度中使用此代码时,它无法正常工作我想显示布尔文本,我的错误代码是:

 columns.Template(s => s.IsActive).Title(T("My Title").ToString()).ClientTemplate(
                    " <span> \\#= IsActive?" + T("Required") + " : " + T("Optional") + " \\#</span>"
                    ).Width(150);

那么第二个怎么了?

1 个答案:

答案 0 :(得分:2)

从它看来,代码没有被提取,因为它混合了html和javascript。在客户端模板中,这应该在剑道:

#if(data.IsActive === true){#<span>Required</span>#}else{#<span>Optional</span>#}#

我发现这个很乱,所以我个人喜欢把它从模板中拉出来并使用一个功能,因为这意味着我可以更轻松地编辑它并且不会感到沮丧。所以像这样:

.ClientTemplate("#=TextFormatter(data.IsActive)#")

然后在javascript中

function TextFormatter(value)
{
    var returnString = ''; 
    if(value === true) 
    {
       returnString = '<span>Required</span>';
    }
    else 
    {
      returnString = '<span>Optional</span>'; 
    }

    return returnString; 
}

如需进一步阅读,请查看此链接:How do I have conditional logic in a column client template