如何确保排序和过滤器图标在初始加载时使用过滤和排序数据显示在ag网格中?

时间:2017-02-08 12:11:00

标签: angular typescript ag-grid

我有一个应用程序,它坚持ag-grid控件的排序和过滤标准。我们正在使用服务器端排序和过滤,因此一旦加载了排序/过滤条件,就会使用这些标准加载网格数据。

当网格首次加载时,显示的行数据是基于保留的排序和过滤数据是正确的。但是,排序/过滤器就位的网格(排序或过滤器图标)中没有任何指示。如何在首次加载数据时确保显示这些内容?

我尝试过使用gridOptions.api.setFilterModel()方法,但是如果我在加载数据之前调用它,我会得到一个异常。如果我在加载数据后直接调用它,则该方法会导致数据重新加载,从而进入无限循环。

我已经能够设置"排序"初始化网格时columnDef上的属性,但无法使用过滤数据执行此操作。

请注意,我们还使用了Angular 2过滤器组件(实现AgFilterComponent),因此请使用" filterFramework" columnDef中设置的属性。

干杯, 斯图尔特。

1 个答案:

答案 0 :(得分:0)

我们也这样做,在我这边,我在启动时调用方法setFilterActive来正确初始化每个过滤器图标的状态。

以下是如何操作的示例

gridOptions.isExternalFilterPresent = () => {
    let isFilterActive = myExternalFiler.ColumnFilters.length > 0
    if (isFilterActive) {
        //used at init time to show the filter icon correctly
        for (let colFilter of myExternalFiler.ColumnFilters) {
        if (!gridOptions.columnApi.getColumn(colFilter.ColumnId).isFilterActive()) {
            gridOptions.columnApi.getColumn(colFilter.ColumnId).setFilterActive(true)
        }
        }
    }         
    return isFilterActive;
}