2015-06-01 42 views
1

我使用角度ui网格来显示我的数据。对于不可选行的角度ui网格特定类

我能在gridOptions选择行选项:

$scope.mygrid.isRowSelectable = function (row) { 
    if (row.entity.id == 2) { 
     return false; 
    } else { 
     return true; 
    } 
}; 

这是工作,我不能选择行:

enableRowSelection: true,

但对于特定的行我通过这段代码禁用选择与id = 2,

但我想为此行添加类以通知它是不可选的。

有什么想法?

回答

1

要突出实际行:

您可以编写自己的rowTemplate和类分配给基于实体ID像这样的行,

var rowTemplate = '<div>' + 
       ' <div ng-class="{ \'red\': row.entity.company==\'Enersol\' }" ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name" class="ui-grid-cell" ng-class="{ \'ui-grid-row-header-cell\': col.isRowHeader }" ui-grid-cell></div>' + 
       '</div>'; 
    $scope.gridOptions = { 
    rowTemplate:rowTemplate, 
    enableSorting: true, 
    columnDefs: [ 
     { field: 'name'}, 
     { field: 'company'} 
    ] 
    }; 

取而代之的是一排的。 entity.company = \'Enersol \'您可以将其更改为row.entity.id并分配类名称。

在这个例子中,'红'表示背景色为黄色,前景色为红色。

看看这个plnkr。 http://plnkr.co/edit/vaqBY235Lfz7WLvy0FCc?p=preview

要修改的实际行头图标:

您可以覆盖选择行标题按钮模板,并添加自定义类的CSS。在您的控制器中注入templateCache并像这样覆盖模板。

$templateCache.put('ui-grid/selectionRowHeaderButtons', 
    "<div class=\"ui-grid-selection-row-header-buttons\" ng-class=\"{'ui-grid-row-selected': row.isSelected , 'ui-grid-icon-cancel':!grid.appScope.isSelectable(row.entity), 'ui-grid-icon-ok':grid.appScope.isSelectable(row.entity)}\" ng-click=\"selectButtonClick(row, $event)\">&nbsp;</div>" 
); 

模板在您的控制器作用域中使用一种方法来确定行是否可选。

样品这里http://plnkr.co/edit/vaqBY235Lfz7WLvy0FCc?p=preview

+0

也许我的问题是不明确的,但我想只是检查列(行,侧栏,我可以点击它,选择行)的specfifc类,而不是所有的行 – BrMe

+0

@BrMe是你的问题不清楚。你可以为'cellClass'属性分配一个函数,并且动态地返回你想要的类。在这里看到更多:http://brianhann.com/customize-ui-grid-with-dynamic-cell-classes/ – c0bra

+0

@BrMe好吧,看起来你正试图用刻度标记自定义行选择标题。 selectionRow的模板是selectionRowHeader,并且您将不得不重写该模板以将其更改为不同的符号,即该行不可选。我会尽力为你举个简单的例子。 – Kathir

0

plnkr在columnDefs你可以添加一个cellClass

function applyClass(grid, row, col, rowRenderIndex, colRenderIndex) { 
    if (row.entity.IsMapped) { 
     return 'disabledRow'; 
    } 
} 

$scope.yourGrid = { 
    columnDefs: [ 
     { cellClass: applyClass } 
    ] 
};