近期在Java平台下开发的过程中,发现了一个问题。原本网格会有一行空行,我们在空行内录入了资料,网格会自动新增一笔新的空行出来,以便于用户录入数据,而我的这个网格不能自动产生这个新的空行了。
项目在Library的基础上开发,遇到这个问题,第一反应是填表工具填的不对,经过仔细核对,关键栏位选择的是正确的。
图1-1关键栏位的设置
没有其他的办法了,只好去一步一步跟踪代码了,前台js代码的跟踪。我们知道,网格有个saveCell函数,只要栏位离开就会触发,那么我们在这个里面设置断点跟踪。
图1-2 saveCell设置断点
saveCell内,有isRowLastKey的判断,以及新增行的操作 addRowLastKey,逐个跟踪这两个函数,处理流程正常,没有什么问题。
图1-3 新增空行的判断与新增操作
流程是正常的,那就要再查一下具体是哪个步骤出了问题。经过仔细查看,在addRowData的时候,固定去找ID是-1的那一行,然后在浏览器内发现并没有ID是-1的这一行,问题应该就在这里了。
图1-4 新增行具体实现
接下来,我们就要查一下产生ID是-1的这一行的代码,在后台由Java代码 addSpaceRow() 产生。
图1-5 产生ID是-1行的具体代码
这时我们发现,ID是记录在明细对象的id中的,而我们的明细是vo,没有去构建id,所以在设置的时候,没有保存的地方,然后在前台取的时候,又取不到,默认给出ID为1。
图1-6 设置前台网格ID的具体代码
知道了问题的原因,解决起来就很简单了,在vo内新增一个id的property即可,今天就带大家进行到这里了,技术人员提供全面的技术保障服务,欢迎联络咨询。
|