Ag-grid заполняет строку после выбора в модели с бесконечной прокруткой - PullRequest
0 голосов
/ 27 февраля 2019

Я использую ag-grid как модель бесконечной прокрутки.Когда я выбираю какую-то строку, я проверяю ее в BE, и после этого я хочу заполнить эту строку зеленым цветом (на синем снимке экрана - это выделенная строка, я хочу заполнить зеленую эту строку после некоторого действия, например, после нажатия кнопки для проверкиэтот ряд).Я пытаюсь установить RowClassRules для этого пути, но это не сработало.Но эта работа перед таблицей была оказана.После отображения таблицы я выбираю строку, и она не заполняется зеленым цветом.Я знаю о функции updateData, но она не поддерживается в модели с бесконечной прокруткой.Могу ли я сделать это другим способом?

enter image description here

render(){
    let cells = this.state.rowIndexWithBadValue;
    let cellsImported = this.state.rowIndexAlreadyImported;
    return(
    ...
        <AgGridReact                                        
            enableColResize={true}                                        
            columnDefs={this.state.columnDefs}
            rowModelType="infinite"
            rowSelection="multiple"
            rowDeselection={true}
            maxBlocksInCache={2}
            suppressRowClickSelection={true}
            getRowNodeId={this.state.getRowNodeId}
            datasource={this.getDataSource(1000)}
            isRowSelectable={this.state.isRowSelectable}
            rowClassRules={{
                "red-row":  function(params) { 
                    return cells.find(e => e === params.node.rowIndex) !== undefined ? true : false;                                           
                },
                "green-row":  function(params) { 
                    return cellsImported.find(e => e === params.node.id) !== undefined ? true : false;                                           
                },
            }}
            onGridReady={this.onGridReady}
            onSelectionChanged={this.onSelectionChanged}
        />
        ...
    )
}

Состояние:

this.state = {
    columnDefs: this.props.columnDefs,
    data: this.props.data,
    selectedData: null,
    getRowNodeId: function(item) {
        let columnIndex = null;
        Object.keys(item).map((elem, index) => {                    
            if (elem === item_id) { columnIndex = index; }
        });
        return Object.values(item)[columnIndex];
    },
    rowIndexWithBadValue: this.props.rowIndexWithBadValue,
    isRowSelectable: function(rowNode) {
        return row.find(e => e === rowNode.rowIndex) == undefined ? true :false;
    },
    jumpButton: true,
    selectButton: false,
    deselectButton: false,
    primaryKey: this.props.primaryKey,
    nextBadRow: null,
    columnsWithDefaultsvalues: this.props.columnsWithDefaultsvalues,
    rowIndexAlreadyImported: this.props.rowIndexAlreadyImported
};

1 Ответ

0 голосов
/ 25 апреля 2019

Для этого случая у вас нет полного решения.Вы можете сделать только одно: заполнить эти строки, но после повторного рендеринга его потерять.Таким образом, вы можете подготовить данные только до первого рендеринга таблицы, или вы можете изменить исходные данные и таблицу рендеринга, но в этом случае вы потеряете все выбранные строки и вам нужно будет снова установить их выбранными.

...