4

基本的な方法を使用してデータを p-dataTable にバインドすると、列の p-dropdown フィルターは正常に機能しますが、p-dataTable をバインドする[lazy]="true" (onLazyLoad)="loadData($event)"とドロップダウン列フィルターが機能しません。

作業コード:

    <p-dataTable #dt id="myDataTable" [value]="data" selectionMode="single" (onRowSelect)="onRowSelect($event)" [paginator]="true"
                     rows="10" [responsive]="true" [totalRecords]="totalRecords">
            <p-column field="Name" header="Name" [sortable]="true" [filter]="true" filterMatchMode="contains" [style]="{'width':'20%'}"></p-column>
            <p-column field="Type" header="Type" [sortable]="true" [filter]="true" filterMatchMode="equals" [style]="{'width':'20%','overflow':'visible'}">
                <template pTemplate="filter" let-col>
                    <p-dropdown [options]="typesFilter" [style]="{'width':'100%'}" (onChange)="dt.filter($event.value,col.field,col.filterMatchMode)" styleClass="ui-column-filter"></p-dropdown>
                </template>
            </p-column>
        </p-dataTable>

動作しないコード:

    <p-dataTable #dt id="myDataTable" [value]="data" selectionMode="single" (onRowSelect)="onRowSelect($event)" [lazy]="true" (onLazyLoad)="loadData($event)" [paginator]="true"
                     rows="10" [responsive]="true" [totalRecords]="totalRecords">
            <p-column field="Name" header="Name" [sortable]="true" [filter]="true" filterMatchMode="contains" [style]="{'width':'20%'}"></p-column>
            <p-column field="Type" header="Type" [sortable]="true" [filter]="true" filterMatchMode="equals" [style]="{'width':'20%','overflow':'visible'}">
                <template pTemplate="filter" let-col>
                    <p-dropdown [options]="typesFilter" [style]="{'width':'100%'}" (onChange)="dt.filter($event.value,col.field,col.filterMatchMode)" styleClass="ui-column-filter"></p-dropdown>
                </template>
            </p-column>
        </p-dataTable>

動作するコードと動作しないコードの違いは次のとおりです

[lazy]="true" (onLazyLoad)="loadData($event)"p-dataTable では、最初の行にバインドします。

4

0 に答える 0