PrimeNG数据表没有数据时如何添加"No Record Found"?
How to add "No Record Found" in PrimeNG Datatable When data is not there?
我在primeNG官网上搜索了一下,发现PrimeNG中没有数据table的emptyMessage= "No Record Found"
这样的属性
参考http://www.primefaces.org/primeng/#/datatable
所以当我的数据中没有数据时 table,它没有向我显示任何消息。
<p-dataTable #datatable [value]="jobData" [rows]="20" [paginator]="true"
[responsive]="true" selectionMode="single"><--emptyMessage="" not working here as attribute :(
<p-column expander="true" styleClass="icon"></p-column>
<p-column field="finOrVin" styleClass="vinfin" header="header" sortable="custom" (sortFunction)="sort($event)">
<p-column field="state" styleClass="status" header="Status" sortable="custom" (sortFunction)="sort($event)">
</p-column>
</p-dataTable>
根据文档,DataTable上确实没有这样的标签。我有同样的 problem/question。我通过创建我显示的第二个元素而不是 DataTable 来解决它。所以添加条件 *ngIf="jobData.length==0"
.
例如:
<p-dataTable #datatable [value]="jobData" [rows]="20" [paginator]="true"
[responsive]="true" selectionMode="single" *ngIf="jobData.length>0">
<p-column expander="true" styleClass="icon"></p-column>
<p-column field="finOrVin" styleClass="vinfin" header="header" sortable="custom" (sortFunction)="sort($event)"></p-column>
<p-column field="state" styleClass="status" header="Status" sortable="custom" (sortFunction)="sort($event)"></p-column>
</p-dataTable>
<div *ngIf="jobData.length==0">
No values to display here
</div>
您可以为此添加功能请求吗?在我的例子中,"No values to display here" 选项实际上更好,因为那时我没有数据列表的 headers。如果您使用标签,您可能会得到 headers。
数据表为此属性采用字符串类型的变量:
<p-dataTable ... [emptyMessage]="myVariable" ...>
然后控制器将字符串放入变量中(即使用 ngx-translate):
class ... {
public myVariable;
ngOnInit() {
this.translateService.get('MY_TRANSLATION').subscribe(
(translationString) => {
this.myVariable = translationString;
}
);
...
}
编辑:
我遇到了直接在模板中执行此操作的解决方案。
(省略属性的括号):
emptyMessage="{{ 'MY_TRANSLATION' | translate }}"
根据 official documentation 现在可以作为模板使用。
When there is no data, DataTable displays a message text defined using the emptyMessage property where as custom content can be provided using emptymessage template.
<p-dataTable [value]="cars" [responsive]="true">
<p-column field="vin" header="Vin"></p-column>
<p-column field="year" header="Year"></p-column>
<p-column field="brand" header="Brand"></p-column>
<p-column field="color" header="Color"></p-column>
<ng-template pTemplate="emptymessage">
Custom content goes here
</ng-template>
</p-dataTable>
我通过控制器找到了一个更优雅、更时尚的解决方案:将第一个字段设置为 "no data found" 的 "fake" 记录推入数据源数组,因为它显示在 [=17] 中=] 并没有被 table 本身的白线覆盖(见附图)。
您只需在 ng-template pTemplate="body"
标签后加上此代码:
<ng-template pTemplate="emptymessage" let-columns>
<tr>
<td [attr.colspan]="columns.length">
No records found
</td>
</tr>
</ng-template>
我在primeNG官网上搜索了一下,发现PrimeNG中没有数据table的emptyMessage= "No Record Found"
这样的属性
参考http://www.primefaces.org/primeng/#/datatable
所以当我的数据中没有数据时 table,它没有向我显示任何消息。
<p-dataTable #datatable [value]="jobData" [rows]="20" [paginator]="true"
[responsive]="true" selectionMode="single"><--emptyMessage="" not working here as attribute :(
<p-column expander="true" styleClass="icon"></p-column>
<p-column field="finOrVin" styleClass="vinfin" header="header" sortable="custom" (sortFunction)="sort($event)">
<p-column field="state" styleClass="status" header="Status" sortable="custom" (sortFunction)="sort($event)">
</p-column>
</p-dataTable>
根据文档,DataTable上确实没有这样的标签。我有同样的 problem/question。我通过创建我显示的第二个元素而不是 DataTable 来解决它。所以添加条件 *ngIf="jobData.length==0"
.
例如:
<p-dataTable #datatable [value]="jobData" [rows]="20" [paginator]="true"
[responsive]="true" selectionMode="single" *ngIf="jobData.length>0">
<p-column expander="true" styleClass="icon"></p-column>
<p-column field="finOrVin" styleClass="vinfin" header="header" sortable="custom" (sortFunction)="sort($event)"></p-column>
<p-column field="state" styleClass="status" header="Status" sortable="custom" (sortFunction)="sort($event)"></p-column>
</p-dataTable>
<div *ngIf="jobData.length==0">
No values to display here
</div>
您可以为此添加功能请求吗?在我的例子中,"No values to display here" 选项实际上更好,因为那时我没有数据列表的 headers。如果您使用标签,您可能会得到 headers。
数据表为此属性采用字符串类型的变量:
<p-dataTable ... [emptyMessage]="myVariable" ...>
然后控制器将字符串放入变量中(即使用 ngx-translate):
class ... {
public myVariable;
ngOnInit() {
this.translateService.get('MY_TRANSLATION').subscribe(
(translationString) => {
this.myVariable = translationString;
}
);
...
}
编辑: 我遇到了直接在模板中执行此操作的解决方案。 (省略属性的括号):
emptyMessage="{{ 'MY_TRANSLATION' | translate }}"
根据 official documentation 现在可以作为模板使用。
When there is no data, DataTable displays a message text defined using the emptyMessage property where as custom content can be provided using emptymessage template.
<p-dataTable [value]="cars" [responsive]="true">
<p-column field="vin" header="Vin"></p-column>
<p-column field="year" header="Year"></p-column>
<p-column field="brand" header="Brand"></p-column>
<p-column field="color" header="Color"></p-column>
<ng-template pTemplate="emptymessage">
Custom content goes here
</ng-template>
</p-dataTable>
我通过控制器找到了一个更优雅、更时尚的解决方案:将第一个字段设置为 "no data found" 的 "fake" 记录推入数据源数组,因为它显示在 [=17] 中=] 并没有被 table 本身的白线覆盖(见附图)。
您只需在 ng-template pTemplate="body"
标签后加上此代码:
<ng-template pTemplate="emptymessage" let-columns>
<tr>
<td [attr.colspan]="columns.length">
No records found
</td>
</tr>
</ng-template>