【问题标题】:ngx-datatable, trigger column sortngx-datatable,触发列排序
【发布时间】:2018-06-18 06:24:52
【问题描述】:

我在尝试手动触发对 ngx 数据表中的行进行排序时遇到了一些问题。 场景是在小型设备上,我将一些列从标题移动到 ngx-datatable-row-detail,但是当我尝试调用 customSort 函数时,ngx-datatable 中的行没有被排序为我会期待的。

模板如下所示:

<ngx-datatable #myTable [columnMode]="'flex'"
                   [rows]="_appointments"
                   [rowHeight]="'auto'"
                   [sorts]="listProps.currentSort"
                   (sort)="sorted($event)"
                   [columns]="_tableColumns">

        <ngx-datatable-row-detail [rowHeight]="'auto'" #myDetailRow>
            <ng-template let-row="row" let-expanded="expanded" ngx-datatable-row-detail-template>
                <div class="ngx-table-toogle hidden-md">
                    <div [class.visible-xs]="myCol.collapse_xs" [class.visible-sm]="myCol.collapse_sm" *ngFor="let myCol of _collapsedTableColumns">
                        <div class="col-xs-12 col-sm-4" [class.sortable]="myCol.sortable" (click)="onCustomSort(myCol.prop,myCol.sortable)">
                            <div class="detail-row-header">
                                {{myCol.name}}
                                <span [class.sort-btn]="myCol.sortable" [class.sort-desc]="isSortedBy(myCol.prop,'desc')" [class.sort-asc]="isSortedBy(myCol.prop,'asc')"></span>
                            </div>
                        </div>
                        <div class="col-xs-12 col-sm-8">
                            <span class="detail-row-data">{{getVal(row,myCol.prop)}}</span>
                        </div>
                    </div>
                </div>
            </ng-template>
        </ngx-datatable-row-detail>

和 onCustomSort 方法类似:

 onCustomSort(sortCol: string, sortable:boolean) {
        if (!sortable)
            return;

        let curdir = this.listProps.currentSort[0].dir === SortDirection.desc ? SortDirection.asc : SortDirection.desc;
        // Hmm, doesn't trigger a resorting of the table.
        this.listProps.currentSort = [{ prop: sortCol, dir: curdir }];
        this.table.sorts = this.listProps.currentSort;

    }

我希望修改 this.listProps.currentSort 会触发该表的使用,因为它绑定到 [sorts]="listProps.currentSort" 但没有任何反应。

有什么想法吗?

【问题讨论】:

    标签: angular ngx-datatable


    【解决方案1】:

    其实解决方法超级简单,只需要加上

    this.table.onColumnSort({ sorts: this.listProps.currentSort });
    

    到 onCustomSort 方法,所以它现在看起来像这样:

    onCustomSort(sortCol: string, sortable:boolean) {
        if (!sortable)
            return;
    
        let curdir = this.listProps.currentSort[0].dir === SortDirection.desc ? SortDirection.asc : SortDirection.desc;
    
        this.listProps.currentSort = [{ prop: sortCol, dir: curdir }];
        this.table.onColumnSort({ sorts: this.listProps.currentSort });
    
    }
    

    【讨论】:

    • 你能提供完整的代码吗?我不明白什么是“this.table”。
    • 不,那段代码早已不复存在 - 但 this.table 指向 #myTable - ngx-datatable 实例。
    • 别担心,伙计,我找到了解决办法。感谢您的重播
    • @MikNiller 老兄,你知道如何解决错位列的调整大小问题吗?
    猜你喜欢
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 1970-01-01
    相关资源
    最近更新 更多