您好,showRow这个函数本身的性能就比较差,而滚动的监听会频繁触发,showRow又会触发另一个sheet的滚动监听,所以会导致卡顿。
建议您采用类似防抖的方式来实现联动滚动的效果,减少showRow的调用次数,这样可以显著改善卡顿的情况,参考代码如下:
- let leftSheet = leftSpread.getSheetFromName("Left")
- let rightSheet = rightSpread.getSheetFromName("Right")
- let leftTimer, rightTimer
- let time = 50
- leftSheet.bind(GC.Spread.Sheets.Events.TopRowChanged, function (sender, args) {
- clearTimeout(leftTimer)
- leftTimer = setTimeout(() => {
- rightSheet.suspendEvent()
- rightSheet.showRow(args.newTopRow, GC.Spread.Sheets.VerticalPosition.top);
- rightSheet.resumeEvent()
- }, time);
- });
- rightSheet.bind(GC.Spread.Sheets.Events.TopRowChanged, function (sender, args) {
- clearTimeout(rightTimer)
- rightTimer = setTimeout(() => {
- leftSheet.suspendEvent()
- leftSheet.showRow(args.newTopRow, GC.Spread.Sheets.VerticalPosition.top);
- leftSheet.resumeEvent()
- }, time);
- });
复制代码
|