【问题标题】:react-data-grid setScrollLeft is not a function - fixed columns not working - custom row rendererreact-data-grid setScrollLeft 不是函数 - 固定列不起作用 - 自定义行渲染器
【发布时间】:2017-06-15 19:55:46
【问题描述】:

我正在尝试在我的react-data-grid 中实现固定列。 我通过添加locked: true 来关注example,但它不起作用,所以我也尝试使用呈现的自定义行,例如other example

我收到_this.refs[i].setScrollLeft is not a function 错误。尝试在 this same question 上发表评论对我也不起作用(抱歉,没有足够的代表发表评论!)。

我也试过create a custom cell render class,但还是没有运气。 我也尝试改用refs回调方式:

class CellRenderer extends React.Component {    
  render() {
    return <ReactDataGrid.Cell {...this.props}/>
  }
};

class RowRenderer extends React.Component {
  static propTypes = {
    idx: React.PropTypes.string.isRequired
  };

  setScrollLeft = (scrollBy) => {
    // if you want freeze columns to work, you need to make sure you implement this as apass through
    this.row.setScrollLeft(scrollBy);
  };

  getRowStyle = () => {
    return {
      color: this.getRowBackground()
    };
  };

  getRowBackground = () => {
    return this.props.idx % 2 ?  'green' : 'blue';
  };

  render() {return (<div style={this.getRowStyle()}>
      <ReactDataGrid.Row 
        {...this.props}
        ref={r => { this.row = r; }}
        cellRenderer={CellRenderer}
      />
    </div>);
  }
};

非常感谢任何帮助!

编辑:尝试了很多事情,仍然没有运气,但我发现 setScrollLeft 方法永远不会传递给 Row 组件,所以也许它确实是 refs 和/或 props 传递的问题.

【问题讨论】:

  • 在将 ref 设置为回调之前,您给 ref 起了什么名字?
  • 对不起,我不明白这个问题。 RowRenderer 是一个有状态的组件,所以我认为使用 ref={r =&gt; { this.row = r; }} 就足够了,所以我可以调用 this.row.setScrollLeft(scrollBy);,不是吗?

标签: javascript reactjs react-data-grid


【解决方案1】:

我不是 100% 确定您所说的“固定”列是什么意思,但如果您希望列的大小由软件设置而不由用户更改,您可以简单地设置 resizable = false。在列上设置locked = true 具有“冻结”列的效果,因此当您滚动时,特定列会停留在那里,这可能不是您想要的。

【讨论】:

  • 固定列是指当您向右滚动时,有几列固定在表格的左侧。这就是我添加repo链接的原因,你可以查看example
  • @gkri 我昨天将此功能 (locked=true) 添加到了一个反应应用程序中,它运行良好。我们正在使用 react 15.4.2、react-data-grid 2.0.16 和 Chrome 浏览器。
  • 感谢您的反馈!在我发布我的问题后不久,我切换到另一个网格。当我有时间再次测试这个时,我会更新我的问题:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
  • 2017-01-24
  • 1970-01-01
  • 2016-07-27
  • 1970-01-01
  • 2019-11-15
相关资源
最近更新 更多