1

我有一个简单的网格,我希望设置 4 列,如果显示“是”,则显示为绿色,如果显示“否”,则显示为红色,这些是这些列可以显示的唯一 2 个值

c.Bound(x => x.col1);
                    c.Bound(x => x.col2)
                        .Title("col2 example");
                    c.Bound(x => x.col3)
                        .Title("col3 example");
                    c.Bound(x => x.col4)
                        .Title("col4 example");
                    c.Bound(x => x.col5)
                        .Title("col5 example");

col2-5 是有问题的

                col1 = x.col1,
                col2 = (x.col2Id.HasValue)  ? "Yes" : "No",
                col3 = (x.col3Id.HasValue) ? "Yes" : "No",
                col4 = (x.col4Id.HasValue) ? "Yes" : "No",
                col5 = (x.col5) ? "Yes" : "No"

ofc 所有的 col... 有不同的名称,但这样它是匿名的。

编辑 - 尝试在我的最新项目中找到代码,客户端模板 = 将始终仅在那些字段中显示为绿色的“是”,服务器模板 = 现在将显示在字段中,<span style='color:green'>Yes</span>如果该字段旨在显示“是”并且<span style='color:red'>No</span>该字段是意思是显示没有。所以这两个代码都工作了一半,我当时和现在使用它们的唯一区别是我现在使用的是 mvc3。

编辑 2 - 无论是最新版本的 Telerik 还是其他我不知道的更改,但如果我将客户端模板代码更改为如下所示,问题就解决了。

.ClientTemplate("<# if(Col2 == 'Yes') { #><span style='color:green'>Yes</span><# } else { #><span style='color:red'>No</span><# } #>")
4

2 回答 2

3

您应该使用服务器或客户端模板来实现相同的效果(取决于您的网格的绑定)。这是服务器模板:

c.Bound( x => x.col4).Template( x => 
{
%>
   <%= (x.col4.HasValue ? "<span style='color:green'>Yes</span>" : "<span style='color:red'>No</span>") %>
<%
});

这是一个客户端模板:

c.Bound( x => x.col4).ClientTemplate("<# if(col4) { #><span style='color:green'>Yes</span><# } else { #><span style='color:red'>No</span><# } #>");
于 2010-12-18T12:28:52.477 回答
1

我刚刚发现有一个客户端行绑定事件,可用于根据行的内容修改行的样式。例如

    function onGridRowDataBound(e) {
        var row = e.row;
        var dataItem = e.dataItem;

        var eligible = e.row.cells[0].innerHTML.indexOf('Not') >= 0;
        if (eligible) {
            //Set the background of the entire row
            row.style.backgroundColor = "green";
        }
    }
于 2011-02-28T23:25:25.203 回答