- 注册时间
- 2022-3-16
- 最后登录
- 2024-11-19
- 阅读权限
- 10
- 积分
- 165
- 精华
- 0
- 帖子
- 11
|
首先说明:该方法在3.8.1版本中没有发现任何问题。本文所描述的问题为3.11版本出现的
问题描述:
1. 初始化一个空的grid,就是不立即使用url方式或setData方式对grid加载数据。
然后页面上给一个按钮,让用户点击按钮后调用
在表格中添加一行,此时会发现页面中显示的表格仍然是空的,但是在console中调用grid.getData()方法后却可以正常获得刚添加的数据。
2. 如果使用其他方式加载了数据之后,比如url或在初始化grid后立即setData,再使用grid.addRow(row,-1)时又能正常显示了。
如下代码为演示方便,使用setTimeout方式将grid.addRow(row,-1)添加到宏任务里面执行,也是会重现这个问题。如没有重现可改为按钮触发的方式
- <!DOCTYPE html>
- <html>
- <head>
- <script src='scripts/boot.js'></script>
- </head>
- <body style="height: 100%;">
- <div class="mini-panel" style="height: 100%;width: 100%;">
- <div id="datagrid1" class="mini-datagrid" style="height: 100%;"></div>
- </div>
- <script>
- mini.parse();
- var grid = mini.get("datagrid1");
- grid.set({
- columns: [
- { field: 'name', name: 'name', header: '姓名' },
- { field: 'age', name: 'age', header: '年龄' }
- ]
- })
- //可能会出现问题:页面不显示,但是grid.getData()能得到添加的数据,需要调用grid.refresh()方法刷新后才会显示到页面上。且console里面也没有报错信息
- setTimeout(() => {
- let row1 = { name: '王五', age: 21 }
- grid.addRow(row1, -1);
- let row2 = { name: '赵六', age: 22 }
- grid.addRow(row2, -1);
- }, 1)
- </script>
- </body>
- </html>
复制代码
|
|