初始用户界面(无过滤器):
[globalFilterFields]="['name','marketingName','m_id']"
问题:在第一列中找到匹配项后跳过其他列字段
在这里,我们正在搜索第一列和第二列中存在的“模型”。但是,它没有考虑第二列。
期望:应显示前 3 行,即 Database、Dataset1、Model
Stackblitz:https ://stackblitz.com/edit/primeng-treetablefilter-demo-efg4b5?file=src/assets/filesystem.json
请展开模块,然后在全局搜索中使用“模型”进行搜索。
我们有搜索框来使用全局过滤器过滤 p-treeTable 的行,如下所示:
<input #searchBox type="text" [(ngModel)]="searchText" pInputText class="searchBox"
placeholder="Search"
(input)="tt.filterGlobal($event.target.value, 'contains')" />
映射到 TreeTable 的列定义如下所示:
this.columns = [
{ field: "name", header: "Name", width: '38%' },
{ field: "marketingName", header: "marketingName", width: '19%' },
{ field: "m_id", header: "M ID", width: '16%' },
{ field: "operation", header: "Operation", width: '7%' }
];
树表代码:
<p-treeTable #tt [value]="businessUnit" [columns]="columns" selectionMode="single"
[(selection)]="selectedTreeProgram" dataKey="name" (onNodeSelect)="onNodeSelect(true)"
(onNodeUnselect)="onNodeSelect(false)" [globalFilterFields]="['name','marketingName','m_id']">
<ng-template pTemplate="colgroup" let-columns>
<colgroup>
<col *ngFor="let col of columns" [style.width]="col.width">
</colgroup>
</ng-template>
<ng-template pTemplate="header" let-columns>
<tr>
<th *ngFor="let col of columns" style="display: none">
{{col.header}}
</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-rowNode let-rowData="rowData" let-columns="columns">
<tr class="bu-row" [id]="utils.getId(rowData['name'])">
<td *ngIf="!rowData['m_id']">
<div class="combine name">{{rowData['name']}}</div>
</td>
<td>
//Dummy
</td>
<td>
//Dummy
</td>
<td>
//Dummy
</td>
</tr>
<tr *ngIf="rowData['m_id']" [ttRow]="rowNode" [ttSelectableRow]="rowNode" class="tree-child-row">
<td>
//Icons
<div class="combine name">{{rowData['name']}}</div>
</td>
<td>
<div class="combine">{{rowData['marketingName']}}</div>
</td>
<td>
<div class="combine">{{rowData['m_id']}}</div>
</td>
<td>
//Edit Delete Icon
</td>
</tr>
</ng-template>
</p-treeTable>