首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AG网格SetColumnSize

AG网格SetColumnSize
EN

Stack Overflow用户
提问于 2019-09-23 12:34:58
回答 1查看 261关注 0票数 0

我正在使用AG Grid编写一个react组件,并希望将列宽存储到本地存储中,这样当页面刷新时,它将被保存,我可以检索它并相应地设置列宽。到目前为止,我已经成功地将列宽保存到本地存储中,但是在迭代列和重置宽度时遇到了麻烦。任何帮助都将不胜感激!

代码语言:javascript
复制
import React, { Component } from 'react';
import './App.css';
import { AgGridReact } from 'ag-grid-react';
import 'ag-grid-community/dist/styles/ag-grid.css';
import 'ag-grid-community/dist/styles/ag-theme-balham.css';

class App extends Component {

  constructor(props) {
    super(props);
    this.state = {
      columnDefs: [{
        headerName: "Make", field: "make"
      }, {
        headerName: "Model", field: "model"
      }, {
        headerName: "Price", field: "price"
      }],
      rowData: [{
        make: "Toyota", model: "Celica", price: 35000
      }, {
        make: "Ford", model: "Mondeo", price: 32000
      }, {
        make: "Porsche", model: "Boxter", price: 72000
      }],
      defaultColDef: { resizable: true },
    };

  }

  onGridReady = params => {
    this.gridApi = params.api;
    this.gridColumnApi = params.columnApi;
    this.restoreState(params);
    };

  onColumnEvent = (params) => {
    if (params.finished === true) {
      let columnId = params.column.colId;
      let columnWidth = params.columnApi.columnController.bodyWidth;
      this.saveState(columnId, columnWidth);
    }
  };

  saveState = (key, value) => {
    window.localStorage.setItem(key, value);
  };

  restoreState = (params) => {
    for (let col of this.state.columnDefs) {
      //console.log(col);
      //console.log(params.columnApi);
      params.columnApi.setColumnWidth(col.headerName, window.localStorage.getItem(col.field));
      console.log(window.localStorage.getItem(col.field));
      //console.log(params.columnApi.columnController.bodyWidth)
    }

    console.log('State restored');
  };

  render() {
    return (
        <div
            className="ag-theme-balham"
            style={{
              height: '500px',
              width: '600px' }}
        >
          <AgGridReact
              columnDefs={this.state.columnDefs}
              defaultColDef={this.state.defaultColDef}
              rowData={this.state.rowData}
              onColumnResized={this.onColumnEvent}
              onGridReady={this.onGridReady}>

          </AgGridReact>
        </div>
    );
  }
}

export default App;
EN

回答 1

Stack Overflow用户

发布于 2019-09-23 23:19:35

您可以使用getColumnState和setColumnState方法

https://www.ag-grid.com/javascript-grid-column-api/

getColumnState返回一个对象,其中包含网格所有列的当前状态。您可以将它们存储在localStorage中,然后检索它们并设置

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58055724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档