You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular Slickgrid无限滚动与拖拽排序异常问题求助

Angular Slickgrid无限滚动+拖拽排序异常问题

问题场景

在Angular Slickgrid实现中开启无限滚动(每页10条数据),同时通过设置enableRowMoveManager: true启用拖拽排序功能。初始数据中上下拖拽行一切正常,但滚动加载更多数据后,尝试拖拽行时网格完全混乱:

  • 无法正常上下移动行
  • 页面大小变为初始页大小+1(如10+1=11)

异常细节

拖拽结束后,onDragEnd事件返回的customEvent对象中,details->args->grid->data->items包含前N条数据+1个undefined条目(N为初始页大小,比如页大小20时是前20条+1个undefined);再次拖拽会新增1个undefined条目。

相关代码

HTML代码

<angular-slickgrid [gridId]="gridId" (onScroll)="handleOnScroll($event)"
(onAngularGridCreated)="angularGridReady($event)" [columns]="columnDefinitions" [options]="gridOptions"
[dataset]="dataSet" (onSelectedRowsChanged)="handleSelectedRowsChanged($event)"
(onCellChange)="onCellChanged($event)" (onDragEnd)="handleOnDragEnd($event)">

核心函数代码

const STATE_CHECK_DELAY = 100;

handleOnScroll(args: any) {
    const viewportElm = args.detail.args.grid.getViewportNode();
    if (
      (['mousewheel', 'scroll'].includes(args.detail.args.triggeredBy ?? '') &&
      viewportElm.scrollTop > 0 &&
      Math.ceil(viewportElm.offsetHeight + args.detail.args.scrollTop) >= args.detail.args.scrollHeight)
    ) {
      const startIdx = this.angularGrid.dataView?.getItemCount() || 0;
      const newItems = this.loadData(startIdx, this.pageSize);
      this.angularGrid.dataView?.addItems(newItems);
    }
  }

loadData(startIdx: number, count: number) {
    const tmpData: any[] = [];
    for (let i = startIdx; i < startIdx + count; i++) {
      if(this.data[i]){
        tmpData.push(this.data[i]);
      }
    }
    return tmpData;
  }

handleOnDragEnd(args: any) {
    setTimeout(()=>{
      let data = [...args.detail.args.grid.data.items];
      data.forEach((res: any,index: number)=>{
        res.sequence = index
      })
      this.cellValueChanged.emit(data);
    },STATE_CHECK_DELAY)
  }

初始化代码

this.dataSet = this.loadData(0, this.pageSize);

已尝试操作

修改甚至移除handleOnDragEnd函数,问题仍未解决。

请求解决方案

恳请提供可行的修复方案。

内容的提问来源于stack exchange,提问作者pankaj meel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 17:23:09