2016-07-26 5 views
1

Это похоже на простую задачу, но я уже провел 4 часа, чтобы найти решение. Как я могу выделить всю строку нажатием на ячейку?угловая ui-сетка выделить целую строку по ячейке

В книге апи У меня есть следующий

$scope.gridOptions.onRegisterApi = function(gridApi){ 
     $scope.gridApi = gridApi; 
     gridApi.cellNav.on.navigate($scope,function(selected){ 

      if('.ui-grid-cell-focus '){ 
      console.log("fired class") 
       $(selected.row.entity).addClass('ui-grid-cell-focus') 
         } 

      console.log("fired cell") 
         $(selected.row.entity).addClass('ui-grid-cell-focus') 

      }); 
    }; 

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

Прикрепленного plunker

ответ

2

Один из способов сделать то, что вы хотите, чтобы добавить определение cellClass к вашему columnDefs. Эта функция принимает два параметра: сетку и строку.

$scope.gridOptions.columnDefs = [{ 
    name: 'id', 
    width: '150', 
    cellTemplate: "", 
    cellClass: getCellClass 
    }, { 
    name: 'name', 
    width: '200', 
    cellClass: getCellClass 
    } ... 
]; 

function getCellClass(grid, row) { 
    return row.uid === selectedRow ? 'highlight' : ''; 
} 

На кнопку можно установить переменную в UID ряда, и внутри функции cellClass вы можете проверить, если UID текущей строки соответствует УИД выбран, если да, то вы можете установить класс для класса, который правильно отражает цвет фона выбранной строки.

var selectedRow = null; 
gridApi.cellNav.on.navigate($scope, function(selected) { 
    if ('.ui-grid-cell-focus ') { 
     selectedRow = selected.row.uid; 
     gridApi.core.notifyDataChange(uiGridConstants.dataChange.COLUMN); 
    } 
}); 

Вот ссылка на обновленной plunker: http://plnkr.co/edit/AgpAI2cmdqgNsSLVNjYA?p=preview

Если вы не любите cellClass подход можно определить пользовательские cellTemplates и так же отреагирует на имущество вы установите на предприятии строки.

+0

Единственное, что я до сих пор не могу понять, как это работает, - «gridApi.core.notifyDataChange». Большое вам спасибо за вашу помощь, я ценю это. – Anton

+0

gridApi.core.notifyDataChange необходимо, чтобы позволить ui-grid знать, чтобы повторно отобразить представление. Если вы не включите этот вызов, он не будет повторно отображен, и тогда он не будет отображать желаемый класс css. рад, что это помогло! –