报表笔记:删除数据时明明已删除再重新调用方法以刷新数据,无故导致 405,请懂的人不会再写前后端代码

📅 2026/7/18 23:01:05
报表笔记:删除数据时明明已删除再重新调用方法以刷新数据,无故导致 405,请懂的人不会再写前后端代码
问题删除数据时明明已删除再重新调用方法以刷新数据无故导致 405请懂的人不会再写前后端代码咏方舟-长流支流 2026-07-18由于报表在移动端时不宜显示太多字段于是将主要字段显示其它字段以展开发的方式显示点击删除正常结果是删除后刷新数据然后单步查看数据是删除了但是出现了405。在移植报表的时候碰到这个问题调试了很久后来才想起来我的折叠行是子元素因为我封装了以后其实是前端、后端再也一行代码也不用写的现在是把报表加上CRUD以便于不用代码生成器直接配置就事大吉。请读完一定会有收获。如果你仔细看了图文并想明白里面的编程思想相信你以后不用再写一行前端代码、也不用再写一行后端代码。现象点击展开行中的“删除”按钮为了方便调试我把主键ID值都显示到按钮旁边页面出现 405 错误我特意在刷新函数时写个alert(‘删除成功’)也没弹出来。原因子元素应用了单击事件展开行也用了单击事件所以点删除后事件向上冒泡引发了父元素的单击事件所以根本到不了刷新函数。解决方案去掉冒泡sb.AppendLine(function doEdit(element) {);sb.AppendLine( var evt window.event || event;);sb.AppendLine( if (evt) {);sb.AppendLine( evt.preventDefault(););sb.AppendLine( evt.stopPropagation(););sb.AppendLine( });sb.AppendLine( var id $(element).siblings(.row-id).text().trim(););sb.AppendLine( if (!id) {);//...经验总结1、配置的时候注意用布局自动渲染模板里的doEdit(this)并在边上加一个隐藏的span以便于doEdit读取ID值这是编程技巧但是挡不住现在把ORM的增删改直接接进去敲了一天代码头都蒙了一时没转过弯。2、父元素有onclickwebmisGrid.doFoldExpandView(this,true)点击“删除”按钮时事件冒泡到父元素触发了展开/折叠逻辑导致页面刷新或额外请求。3、删除按钮的点击事件没有阻止冒泡doDelete内部的return false不能阻止事件传播。3. 解决方案在doDelete内部用event.stopPropagation()阻止冒泡或直接在模板按钮上加onclickevent.stopPropagation(); doDelete(this);确保点击子元素时父元素事件不被触发。