2013-10-01 4 views
3

Я использую Кендо UI сетку, которая изменяет цвет Б.Г. каждой строки из-за состояния в DataBound события, как это:кендо UI событие изменения сетки фона

function onDataBound(e) { 

    var grid = $("#Software").data("kendoGrid"); 
    var gridData = grid.dataSource.view(); 

    for (var i = 0; i < gridData.length; i++) { 
     var currentUid = gridData[i].uid; 
     if (gridData[i].CategoryID == 1) { 
      var currenRow = grid.table.find("tr[data-uid='" + currentUid + "']"); 
      $(currenRow).addClass("green"); 
     } 
     else if (gridData[i].CategoryID == 2){ 
      var currenRow = grid.table.find("tr[data-uid='" + currentUid + "']"); 
      $(currenRow).addClass("red"); 
     } 
     else { 
      var currenRow = grid.table.find("tr[data-uid='" + currentUid + "']"); 
      $(currenRow).addClass("yellow"); 
     } 
    } 
} 

У меня есть пользовательский столбец где Для категоризации назначаются 3 кнопки. Теперь я хочу изменить цвет фона строки, когда нажимается одна из этих кнопок.

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

Я только хочу добавить, например, класс css «зеленый» для затронутой строки.

function SetGreen(sid, cid) { 

    var grid = $("#grid").data("kendoGrid"); 

    cid =1; 
    var url = '@Url.Action("SetMethod","SetController")'; 

    $.post(url, { SID: sid, CID: cid }); 

    grid.saveChanges(); 

    //right here I want to set the bg color for the affected row 
} 

заранее спасибо

ответ

0

Вы можете использовать rowTemplate сетку, чтобы установить класс CSS элемента строки таблицы (TR) оказанный для каждого элемента данных. Что-то вроде этого:

var categoryClassNames = { 
    1: "red", 
    2: "green" 
}; 

$("#grid").kendoGrid({ 
    dataSource: [ 
    { Category: 1 }, 
    { Category: 2 }, 
    { Category: 1 } 
    ], 
    rowTemplate: "<tr data-uid='#=uid#' class='#= categoryClassNames[Category]#'>" + 
       "<td>#= Category #</td>" + 
       "</tr>" 
}); 

Для обновления определенной строки таблицы можно использовать следующий код:

var grid = $("#grid").data("kendoGrid"); 
var itemToUpdate = grid.dataSource.at(1); // we will update the second item 

itemToUpdate.Category = 1; 

$("#grid tr[data-uid='" + itemToUpdate.uid + "']").removeClass("green").addClass("red"); 

Вот живой демо: http://jsbin.com/iNExotO/2/edit

+0

спасибо за ответ, но цвет строки уже установлен в событии привязки данных при загрузке сетки. Что мне нужно знать, так это то, как я могу изменить цвет фона, если нажата одна из трех кнопок. – pavemann

+0

Вам необходимо обновить соответствующее поле и обновить сетку. –

+0

эй атанас - и это точно точка. Я не хочу обновлять сетку, потому что она содержит около 10 тыс. Записей - это займет слишком много времени. единственное, что я хочу сделать, - добавить класс css в соответствующую строку таблицы, чтобы пометить строку как категорированную. – pavemann

Смежные вопросы