【问题标题】:Highlight selected row in primeng table without checking the checbox突出显示primeng表中的选定行而不选中复选框
【发布时间】:2022-05-01 18:46:16
【问题描述】:

我正在使用primeng p-tablep-checkbox。我希望能够在不选中复选框的情况下突出显示单击的行(或行内容)。应在单击复选框本身而不是行时选中复选框。 我尝试使用[pSelectableRow],但除了突出显示它之外,它还会检查复选框。

<p-table [columns]="cols" [value]="brands" [(selection)]="selected" dataKey="vin">
    <ng-template pTemplate="header" let-columns>
        <tr>
            <th style="width: 3em">
                <p-tableHeaderCheckbox></p-tableHeaderCheckbox>
            </th>
            <th *ngFor="let col of columns">
                {{col.header}}
            </th>
        </tr>
    </ng-template>
    <ng-template pTemplate="body" let-rowData let-columns="columns">
        <tr [pSelectableRow]="rowData">
            <td>
                <p-tableCheckbox [value]="rowData"></p-tableCheckbox>
            </td>
            <td *ngFor="let col of columns">
                {{rowData[col.field]}}
            </td>
        </tr>
    </ng-template>
</p-table>

我应该怎么做才能仅突出显示单击的行,而不选中复选框? 我创建了一个Stackblitz 示例。

【问题讨论】:

    标签: angular primeng p-table


    【解决方案1】:

    我能够通过维护一个变量highlight 来实现这一点,该变量获取单击的行值,并将突出显示类仅分配给该值等于单击行的值的行。

    <ng-template pTemplate="body" let-rowData let-columns="columns">
            <tr class="some-class"  [class.ui-state-highlight]="rowData === highlighted">
                <td>
                    <p-tableCheckbox [value]="rowData"></p-tableCheckbox>
                </td>
                <td *ngFor="let col of columns">
                
                    <a (click)="highlighted = rowData"> {{rowData[col.field]}}</a>
                </td>
            </tr>
        </ng-template>
    

    更新了 Stackblitz here

    【讨论】:

      【解决方案2】:

      在行上添加一些类

      <tr [pSelectableRow]="rowData" class="some-class">
      

      然后在 css 中做这个技巧

      .some-class:hover {
        background-color: some color... or put any style you need
      }
      

      【讨论】:

      • 这不起作用,它仍然选中复选框,我希望它在点击时起作用,而不是悬停。
      • 将可点击区域放入
      • 这对我来说不是很清楚。你能更新一下 Stackblitz 的例子吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 2020-08-23
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多