Telerik Grid Row Пользовательское форматирование в поле bit/int/string

Я бы предпочел либо для строки или Int, но согласился бы на это на основе бит.

Цель состоит в том, чтобы, если значение поля String == 'бла-бла-бла', оно превратило весь этот ряд в серый (синяя таблица с красным и зеленым уже использовалась, поэтому я открыт для любого другого предложения по цвету)

я пробовал

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

все это не сработало ни в малейшей степени, и это единственные четкие примеры того, как это сделать, чтобы у кого-нибудь возникли идеи?

1 ответ

Решение

Ну, это длилось вечно, но Telerik, наконец, признал, что была ошибка с Cellaction в версии с открытым исходным кодом, с которой они столкнулись в коммерческой версии (http://www.telerik.com/community/forums/aspnet-mvc/grid/cell-action-Issue очевид-обеспеченный.aspx), потребовалось только две заблокированные темы, пока они, наконец, не приняли то, что я говорил им все время.

Короче говоря, если вы хотите сделать что-то вроде этого при возникновении проблем с 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 сможет разблокировать мои темы, чтобы я мог добавить найденное решение.

Другие вопросы по тегам