2012-07-03 2 views
4

Я использую сетку Telerik. Мне нужно установить цвет фона для всей строки на основе некоторой модели свойства в представлении. Я попытался сделать это, как показано ниже, установив фон в инструкции IF для каждого столбца, но backgound применяется только к элементу, а не ко всей ячейке (td). Также кажется, что это очень «грязный» способ выполнить эту задачу.Telerik ASP.NET MVC 3 Сетка - установка фона строки

@(Html.Telerik().Grid(Model.SomeItems).Name("Grid") 
       .Columns(columns => 
       { 
        columns.Template(
         @<text> 
          @if (Model.IsOfSpecialColor) 
          { 
          <div class="gridRowBackground"> 
           @Html.ActionLink(...) 
          </div> 
          } 
          else 
          {           
           @Html.ActionLink(...) 
          } 
         </text>).Title("Blabla"); 
       }); 

ответ

11

Вы можете изменить его с помощью onRowDataBound события

@(Html.Telerik().Grid<Customer>() 
     .Name("Grid2") 
     .DataBinding(d => d.Ajax().Select("Select", "Home")) 
     .ClientEvents(e => e.OnRowDataBound("onRowDataBound")) 
) 

и функция

<script> 
function onRowDataBound(e) { 
    if (e.dataItem.ID == 2) { 
     e.row.style.backgroundColor = "grey"; 
    } 
} 
</script> 
2

Если вы используете привязки данных сервера, вы можете использовать CellAction. Однако, если вы используете привязку данных ajax, вам нужно будет использовать такое решение, как Tassadaque.

@(Html.Telerik().Grid(Model.SomeItems) 
.Name("Grid") 
.CellAction(cell => 
{ 
    if (cell.DataItem.IsOfSpecialColor.Value) 
    { 
     cell.HtmlAttributes["style"] = "background-color: red"; 
    } 
}) 
Смежные вопросы