#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