flexGrid编辑结束删除所有表格数据后报错
普通grid,存在自定义单元格事件,编辑单元格事件触发后删除表格数据,报错cant read property "binding" of underfined at GridPanel.getCellData请上传一个重现问题的demo上来,我帮你看一下 Richard.Ma 发表于 2022-10-13 18:02
请上传一个重现问题的demo上来,我帮你看一下
内网,看不了.... ,grid编辑事件结束就报错 从错误代码确实没有办法判断问题,你可以先看一下具体是哪句代码执行报错了,把代码发上来 Richard.Ma 发表于 2022-10-13 18:13
从错误代码确实没有办法判断问题,你可以先看一下具体是哪句代码执行报错了,把代码发上来
import React, { Component } from 'react'
import '@grapecity/wijmo.styles/wijmo.css';
import {FlexGrid,FlexGridColumn} from '@grapecity/wijmo.react.grid';
export default class Grid extends Component {
constructor(props){
super(props)
this.state={
data:[],
columns:[
{
binding:"name",
header:"名称",
width:220,
},
{
binding:"timer",
header:"编辑时间",
width:220,
},
]
}
}
beginningEdit=(s,e)=>{
let col=s.columns
if(col.binding==="name"){
let item=s.rows.dataItem
if(!item?.newFlag){
e.cancel=true
}
}else{
e.cancel=true
}
}
cellEditEnded=(s,e)=>{
let item=s.rows.dataItem
if(item?.name===""){
this.setState({data:[]})
}
}
add=()=>{
this.setState({data:[
{
id:null,
name:"新建目录",
newFlag:"newBuild",
writeCategory:true
}
]})
}
handInit=(grid)=>{
this.grid=grid
grid.gotFocus.addHandler(()=>{
grid.startEditing(true)
})
}
handleFormatItem=(gridPanel,cellRange)=>{
const {rows,columns,cells}=gridPanel
const {cell,col,row,panel}=cellRange
if(cells===panel){
const column=columns
let rowIndex=row
let dataItem=null
let newRowIndex=gridPanel._items.length-1
for(let i=0;i<gridPanel._items.length;i++){
const element=gridPanel._items
if(i===rowIndex){
dataItem=element
}
}
if(dataItem){
console.log(11,cell,dataItem,column,newRowIndex);
this.handleFormatCell(cell,dataItem,column,newRowIndex)
}
}
}
handleFormatCell=(cell,dataItem,col,newRowIndex)=>{
const {data}=this.state
if(col.binding==="name"){
if(dataItem?.newFlag){
this.grid.setCellData(data.length,"name",dataItem.name)
this.grid.select(newRowIndex,0)
this.grid.rows.isSelected=true
this.grid.startEditing()
}else{
cell.innerHTMl=`<div>111${col.index}</div>`
}
}
}
render() {
const {columns}=this.state
return (
<>
{this.state.data.length>0&&<FlexGrid
cellEditEnded={this.cellEditEnded}
beginningEdit={this.beginningEdit}
initialized={this.handInit}
itemsSource={this.state.data}
formatItem={this.handleFormatItem}
>
{columns.map((column,index)=>(
< FlexGridColumn key={column?.binding||index} {...column}/>
))}
</FlexGrid>}
<button onClick={this.add}>新增目录</button>
</>
)
}
}
Richard.Ma 发表于 2022-10-13 18:13
从错误代码确实没有办法判断问题,你可以先看一下具体是哪句代码执行报错了,把代码发上来
就这个,需求是点击新增 自动聚焦单元格,不聚焦好像就不会报错 本帖最后由 Richard.Ma 于 2022-10-18 18:59 编辑
不好意思,没有办法通过代码来判断问题原因,我这这边也测试了cellEditEnded事件中去设置DataSource为空,并没有报错
如果需要我们这边继续协助调研的话,建议你还是新建一个demo来重现问题,这个过程中你也可以排查看看问题具体是如何引起的。
如果确实能重现问题的话,可以上传上来,这样也不会包含你们项目的数据
附件代码,重现了报错问题
收到,这边验证后给你回复
页:
[1]