Telerik Grid Row Пользовательское форматирование в поле bit / int / string - PullRequest
0 голосов
/ 05 апреля 2011

Я бы предпочел либо строку, либо 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 Ответ

3 голосов
/ 26 июля 2011

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

...