0

我更喜欢字符串或整数,但会根据位来解决。

目标是如果一个字符串字段的值 == 'blah blah blah' 它将把整行变成灰色(蓝色表已经使用了红色和绿色,所以我愿意接受任何其他颜色建议)

我试过了

.RowAction(row =>
    {
        if (row.DataItem.[Bound Data col Name] == "[String value]")
        {
            row.HtmlAttributes["style"] = "background:grey;";
        }
    }) 

.RowAction(row =>
    {
        if (row.DataItem.[Bound Data col Name] == "[String value]")
        {
            row.Grid.HtmlAttributes["style"] = "background:grey;";
        }
    }) 

.ClientEvents(events => events.OnRowDataBound("onRowDataBound"))
function onRowDataBound(e) {
    if (e.dataItem.[Bound Data col Name] == "[String value]") {
        e.row.style.backgroundColor = "grey";
    }
}

所有这些都没有丝毫起作用,这些是 mvc 关于如何做到这一点的唯一明确示例,所以有人有任何想法吗?

4

1 回答 1

3

好久不见,但telerik最终承认,开源版本的Cellaction存在一个错误,他们在商业版本中有地址(http://www.telerik.com/community/forums/aspnet-mvc/grid/cell- action-issue-evidence-provided.aspx),只花了 2 个锁定的主题,直到他们最终接受了我一直在告诉他们的内容。

长话短说,如果您想在 Cellaction 遇到问题时执行此类操作,请购买商业版本或按照以下步骤操作。

只需为要更改颜色的每个单元格在 DTO 中添加一个额外的字段,在我的情况下,我有 6 个日期,这取决于它们与当前日期的接近程度会改变它们的颜色。

然后,您将在控制器中进行所有日期计算,并根据它的接近程度将颜色记录到相应的 DTO 项目。

例如

public String DateDisplay1
public String DateDisplay1Colour

然后您将隐藏网格上的颜色项并使用它的值来更改 DateDisplay1 所在行的颜色。

所以如果 DateDisplay1 在 row1 上,那么在 onRowDataBound(e) 函数中我会有类似的东西

if (e.dataItem.DateDiplay1Colour == "Green") {

        e.row.cells[1].style.backgroundColor = "#7EDF7D";
    }

这样,您仍然可以在其单元格中显示日期,然后根据其相应的隐藏值显示颜色。

那么同样可以使用管理员权限完成,所以如果用户不是管理员,那么

row.cells[6].innerHTML = '<readonly>' + "Edit" + '</readonly>';

从而摆脱允许用户编辑该记录的链接。

希望这对某些人有所帮助,我希望 Telerik 能够解锁我的主题,以便我可以添加我找到的解决方案。

于 2011-07-26T14:40:47.790 回答