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

KendoReact Grid新增或编辑条目时列跳转错位如何解决?

问题根因

你当前的表格在每次状态更新渲染时,都会无条件对数据应用orderBy排序规则,当新增/编辑操作修改了排序字段对应的值时,条目会立即按当前排序规则重新排列,导致视觉上出现行跳转错位的问题。你虽然已经在手动修改排序的回调里做了编辑状态拦截,但没有拦截渲染时的自动排序逻辑,同时新增操作没有同步更新全局inEdit状态,导致新增时依然会触发自动排序。

解决方案

1. 调整渲染时的排序逻辑,编辑状态下暂停自动排序

修改Grid组件的data属性,判断全局inEdit状态,编辑状态下直接使用原始数据,不做排序处理:

<Grid
  // 编辑状态下暂停自动排序,避免行跳转
  data={this.state.inEdit ? this.state.data : orderBy(this.state.data, this.state.sort)}
  onItemChange={this.itemChange}
  sortable={true}
  sort={this.state.sort}
  editField="inEdit"
  onSortChange={this.handleSortChange}
>

2. 新增操作同步更新全局inEdit状态

修改enterInsert方法,新增时把全局编辑状态设为true,触发暂停排序逻辑:

enterInsert() {
  const dataItem = { inEdit: true, Discontinued: false };
  const newproducts = this.state.data.slice();
  newproducts.unshift(dataItem);
  this.update(newproducts, dataItem);
  this.setState({
    data: newproducts,
    // 新增时同步开启全局编辑状态
    inEdit: true
  });
}
效果验证
  • 新增条目时,行会固定在表格顶部,不会立即触发排序跳转
  • 编辑已有条目时,修改排序字段内容不会触发行位置变动
  • 点击保存/取消按钮后,全局inEdit状态重置为false,表格自动恢复排序,条目归位到对应排序位置
  • 非编辑状态下的手动排序功能不受影响

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:24:07