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

#c# #asp.net-mvc #telerik-grid #custom-formatting

#c# #asp.net-mvc #telerik-grid #пользовательское форматирование

Вопрос:

Я бы предпочел либо string, либо int, но согласился бы на это в зависимости от bit.

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

Я пробовал

 .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 о том, как это сделать, так что у кого-нибудь есть идеи?

Комментарии:

1. Какая часть не работает? Соответствие значения? Эта часть должна работать: e.row.style.backgroundColor = «grey»; Попробуйте выполнить отладку, отобразив фактическое значение, с которым вы пытаетесь сравнить.

2. До сих пор понятия не имею, что было не так, но теперь это работает, ну, клиентские события и jscript работают, но только после того, как я загрузил пример проекта, который мне предоставили на форумах telerik, и тогда бац, это сработало.

3. Итак, если у кого-нибудь такая же загадочная проблема, то telerik.com/community/forums/aspnet-mvc/grid /…

Ответ №1:

Это заняло целую вечность, но 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
  

затем вы должны скрыть элемент color в таблице и использовать его значение для изменения цвета строки, в которой включен DateDisplay1.

итак, если DateDisplay1 находится в строке 1, то в функции OnRowDataBound (e) у меня было бы что-то вроде

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

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

таким образом, вы все равно можете отобразить дату в ее ячейке, а затем отобразить цвет на основе соответствующего скрытого значения.

тогда то же самое можно сделать с правами администратора, поэтому, если пользователь не является администратором, то

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

таким образом, избавляясь от ссылки, позволяющей пользователю редактировать эту запись.

Надеюсь, это поможет некоторым людям, и я надеюсь, что telerik найдет время для разблокировки моих тем, чтобы я мог добавить найденное решение.

Комментарии:

1. Другим способом сделать это было бы e.row.cells[1].style.backgroundColor = e.DataItem. DateDisplayColour и вместо того, чтобы он был зеленым, у вас был бы оператор if, который задает для ввода цвет, который вы хотели отобразить.

2. Что я сейчас делаю в kendoui, так это в разделах columns присваиваю любому полю шаблон, который был бы установлен в модели, например «template: ‘#=Temp3#'», а затем в модели «this. Temp3 = «<a class=’btn btn-…’ здесь я отображал разные кнопки начальной загрузки на основе дат или w / e, и это можно было использовать для установки цвета фона или w / e