2017-01-30 2 views
0

固定列を私のreact-data-gridに実装しようとしています。 exampleの後にlocked: trueを追加しても動作しませんので、other exampleのようにレンダリングされたカスタム行を使用しようとします。反応データグリッドsetScrollLeftは関数ではありません - 固定列が動作しない - カスタム行レンダラー

_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>); 
    } 
}; 

をすべてのヘルプははるかに高く評価されます!

EDIT:多くのことを試してもまだ運はありませんが、setScrollLeftメソッドがコンポーネントに渡されることはありません。したがって、おそらくrefsやpropsに問題があるかもしれません。

+0

コールバックに設定する前にrefに与えた名前は何ですか? –

+0

申し訳ありませんが、私はその質問を理解していません。 'RowRenderer'はステートフルなコンプネントなので、' ref = {r => {this.row = r; }} '十分であるので、私は' this.row.setScrollLeft(scrollBy); 'を呼び出すことができます、そうではありませんか? – gkri

答えて

0

「固定」列の意味を100%確信しているわけではありませんが、ソフトウェアによって設定され、ユーザーによって変更されないようにするには、単にresizable = falseを設定します。列に「locked」= trueを設定すると、列をフリーズする効果があります。スクロールすると、その特定の列がそこに残りますが、これはおそらく必要ではありません。

+1

固定列とは、右にスクロールすると、テーブルの左側にいくつかの列が固定されていることを意味します。だから私はレポへのリンクを追加したので、[example](http://adazzle.github.io/react-data-grid/examples.html#/fixed-cols)を確認することができます。 – gkri

+0

@gkri昨日反応アプリにこの機能(locked = true)を追加しました。うまくいきました。私たちは反応15.4.2、反応データグリッド2.0.16とChromeブラウザを使用しています。 –

+0

フィードバックに感謝します!私は別のグリッドに切り替えた私の質問を投稿した後にショーティー。私は再びこの1つをテストするためにいくつかの時間を見つけるとき私は私の質問を更新する:) – gkri

関連する問題