1

我有 10 列的 PrimeNG 数据表。最后一列包含图像。单击图像时,我必须突出显示该行。

如果我在数据表中添加选择模式“单一”,则单击行时会突出显示该行。我不要那个。我希望它仅在用户单击最后一列的图像时突出显示。

<p-column>
        <ng-template let-row="rowData" pTemplate type="body">
          <img src="assets/images/info_icon.jpg" style="height:20px;width:20px">
        </ng-template>
  <p-column>
4

1 回答 1

5

您需要做的是click在图像上设置一个事件,该事件将切换关联行的属性。我们称它为属性isSelected

您的图像列的 HTML 代码变为

<p-column field="isSelected" header="" [style]="{'width':'32px','cursor': 'pointer'}">
  <ng-template pTemplate="body" let-rowData="rowData">
    <img src="https://image.flaticon.com/icons/svg/106/106705.svg" (click)="rowData.isSelected=!rowData.isSelected"/>
  </ng-template>
</p-column>

然后将rowStyleClassPrimeNG 属性添加到您p-dataTable将调用一个函数的函数中,让我们为其命名isRowSelected

<p-dataTable [value]="cars" [rowStyleClass]="isRowSelected">

isRowSelected函数将返回一个类名,具体取决于您选择或取消选择该行

isRowSelected(rowData: any) {
  return (rowData.isSelected) ? "rowSelected" : "rowUnselected";
}

最后,创建这两个 CSS 类:rowSelectedrowUnselected

tr.rowUnselected > td {
  color: black;
  background-color: white !important;
}

tr.rowSelected > td {
  color: black;
  background-color: #dff0d8 !important;
}

这是一个工作的Plunker

于 2017-11-11T19:56:26.557 回答