【问题标题】:Telerik grid custom formatting changing displayed text colour If "Yes" green If "No" RedTelerik 网格自定义格式更改显示的文本颜色如果“是”绿色如果“否”红色
【发布时间】:2010-12-17 15:26:39
【问题描述】:

我有一个简单的网格,我希望设置 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><# } #>")

【问题讨论】:

  • @Myzifier 再次编辑并没有说明问题的原因。我建议您在 Telerik 论坛中打开一个论坛主题并附上一个示例项目。我没有其他要补充的。
  • 会认为有近 600 次观看,不止 1 个人会觉得这很有用,但我猜不是。

标签: c# visual-studio asp.net-mvc-2 telerik telerik-grid


【解决方案1】:

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

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><# } #>");

【讨论】:

  • 刚刚尝试了客户端模板,但这只是将所有显示的值更改为绿色“是”,所以看看我可以用服务器模板做什么,以防有不同的结果。
  • 服务器模板运行良好,但我仍然保持相同的代码格式,因为它与我的同事相同。 (这意味着 [] .HasValue 中的所有内容? ["Yes" : "No"] ) % > 它取代了“是”:“否”)如果我还有 2 个代表,我也会将你的答案标记为有用
  • Atanas,Ajax 绑定时有没有办法设置行属性?例如设置行的背景颜色。
  • 是的。使用 OnRowDataBound 客户端事件。它暴露了 e.row
  • @CraigFisher 我希望我理解这一点,但你不能只使用与上面链接相同的代码,而是使用 style='color 代替背景颜色或其他东西,这样就可以了同样的把戏? [这是给你的 korchev,但这样 craig 会注意到回应。]
【解决方案2】:

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

    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";
        }
    }

【讨论】:

猜你喜欢
  • 2014-08-01
  • 1970-01-01
  • 2012-02-11
  • 2012-04-11
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-10
相关资源
最近更新 更多