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