作成日: 2017/12/07 最終更新日: 2019/12/24
文書種別
制限事項
発生環境
IE、Edge、FireFoxでのみ発生
詳細
FlexGrid.itemFormatterまたはformatItemで固定列のセルにカスタム要素を表示して、addEventListenerメソッドでカスタム要素にイベントリスナーを登録した場合、初期表示またはスクロールした場合にカスタム要素を操作してもイベントが発生しません。
この現象は制限事項です。(5.20162.231以前のバージョンでは発生しません。)
5.20163.254版で、スクロールパフォーマンスを向上するために固定列のセルをクローンして表示するように内部処理が変更され、その影響で本現象が発生します。固定列のカスタム要素にイベントリスナーを登録するには、FlexGrid.cloneFrozenCells = falseに設定して、固定列のセルをクローンしないようにする必要があります。
なお、itemFormatter/formatItemでイベントリスナーを登録すると、スクロールしてセルが再描画されるたびにイベントリスナーが登録され、メモリリークが発生してしまいます。itemFormatter/formatItemでセル要素を記録してイベントリスナーを削除してから登録することもできますが、大量のイベントリスナーが登録されて負荷が非常に高くなるため、このような処理方法は推奨されません。
その代わりに、次のようにカスタム要素ではなくFlexGridのホスト要素にイベントリスナーを登録する方法を推奨します。
この現象は制限事項です。(5.20162.231以前のバージョンでは発生しません。)
5.20163.254版で、スクロールパフォーマンスを向上するために固定列のセルをクローンして表示するように内部処理が変更され、その影響で本現象が発生します。固定列のカスタム要素にイベントリスナーを登録するには、FlexGrid.cloneFrozenCells = falseに設定して、固定列のセルをクローンしないようにする必要があります。
なお、itemFormatter/formatItemでイベントリスナーを登録すると、スクロールしてセルが再描画されるたびにイベントリスナーが登録され、メモリリークが発生してしまいます。itemFormatter/formatItemでセル要素を記録してイベントリスナーを削除してから登録することもできますが、大量のイベントリスナーが登録されて負荷が非常に高くなるため、このような処理方法は推奨されません。
その代わりに、次のようにカスタム要素ではなくFlexGridのホスト要素にイベントリスナーを登録する方法を推奨します。
flexGrid.hostElement.addEventListener('click', function (e) {
if (e.target.tagName == 'BUTTON' && wijmo.closest(e.target, '.wj-cell')) {
var ht = flexGrid.hitTest(e);
alert(wijmo.format('{row}行{col}列のセルがクリックされました', ht));
}
})
旧文書番号
82464