jQuery MiniUI

 找回密码
 立即注册
查看: 600|回复: 1
打印 上一主题 下一主题

grid.addRow(row,-1)的问题 [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2023-7-2 22:03:03 |只看该作者 |倒序浏览
首先说明:该方法在3.8.1版本中没有发现任何问题。本文所描述的问题为3.11版本出现的
问题描述:
1. 初始化一个空的grid,就是不立即使用url方式或setData方式对grid加载数据。
然后页面上给一个按钮,让用户点击按钮后调用
  1. grid.addRow(row,-1);
复制代码
在表格中添加一行,此时会发现页面中显示的表格仍然是空的,但是在console中调用grid.getData()方法后却可以正常获得刚添加的数据。
2. 如果使用其他方式加载了数据之后,比如url或在初始化grid后立即setData,再使用grid.addRow(row,-1)时又能正常显示了。

如下代码为演示方便,使用setTimeout方式将grid.addRow(row,-1)添加到宏任务里面执行,也是会重现这个问题。如没有重现可改为按钮触发的方式

  1. <!DOCTYPE html>
  2. <html>

  3. <head>
  4.     <script src='scripts/boot.js'></script>
  5. </head>

  6. <body style="height: 100%;">
  7.     <div class="mini-panel" style="height: 100%;width: 100%;">
  8.         <div id="datagrid1" class="mini-datagrid" style="height: 100%;"></div>
  9.     </div>
  10.     <script>
  11.         mini.parse();
  12.         var grid = mini.get("datagrid1");
  13.         grid.set({
  14.             columns: [
  15.                 { field: 'name', name: 'name', header: '姓名' },
  16.                 { field: 'age', name: 'age', header: '年龄' }
  17.             ]
  18.         })

  19.         //可能会出现问题:页面不显示,但是grid.getData()能得到添加的数据,需要调用grid.refresh()方法刷新后才会显示到页面上。且console里面也没有报错信息
  20.         setTimeout(() => {
  21.             let row1 = { name: '王五', age: 21 }
  22.             grid.addRow(row1, -1);
  23.             let row2 = { name: '赵六', age: 22 }
  24.             grid.addRow(row2, -1);
  25.         }, 1)
  26.     </script>
  27. </body>

  28. </html>
复制代码


Rank: 8Rank: 8

沙发
发表于 2023-7-12 15:14:29 |只看该作者
本帖最后由 felt 于 2023-7-13 09:03 编辑

addRow(row,index)index是从0开始的数字,表示第几行的位置插入

Archiver|普加软件

GMT+8, 2024-5-3 11:48 , Processed in 1.022238 second(s), 9 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部