JS动态加载数据到ListView数据表格,addNewRow方法添加数据后不显示数据
本帖最后由 梦想去旅行 于 2021-12-30 17:30 编辑有个奇怪的现象,设计通过JS动态加载数据到表格,但是页面初始执行数据加载时,表格会出现显示不出数据来。重复刷新页面会出现有时可以,有时加载不出来。服务端获取数据是正常的。
JS代码:
var page = Forguncy.Page;
page.ready(function () {
var selYear = page.getCell("selYear");
selYear.bind("valuechanged", selYearChange);
selYearChange();
function selYearChange() {
var valYear = selYear.getValue();
var listview = page.getListView("表格1");
listview.reload();
getRegionAreaSampleCount(valYear,function(data){
data.forEach(row => {
listview.addNewRow(row);
});
});
}
function getRegionAreaSampleCount(year,callback) {
Forguncy.Helper.post("ServerCommand/GetSampleCountRegionArea", {Year:year}, function (result) {
if (result.ErrCode === 0) {
if (callback) callback(JSON.parse(result.Message));
}
else {
console.log(result);
}
}, true);
}
});页面初始加载数据到表格未显示出来:
您好,是不是因为在表格设置中勾选了初始化页面时不加载表格数据的缘故呢。建议您可以上传一个demo上来,这样我们也可以更好的分析问题产生的原因,更好的去解决问题:loveliness:
Lay.Li 发表于 2021-12-30 11:31
您好,是不是因为在表格设置中勾选了初始化页面时不加载表格数据的缘故呢。建议您可以上传一个demo上来,这 ...
没有勾选初始不加载。重点是重复刷新页面会出现有时可以,有时加载不出来。服务端获取数据是正常的。 本帖最后由 Lay.Li 于 2021-12-30 15:36 编辑
您好,您是在页面加载时命令种使用的这个js代码吗,有可能是因为当表格还没有渲染完毕时这个js代码就已经执行完了,所以就没有加载数据。您可以尝试使用ready方法来回调这个js代码,来看看是否可以正常的在表格中添加数据:loveliness:
Lay.Li 发表于 2021-12-30 15:30
您好,您是在页面加载时命令种使用的这个js代码吗,有可能是因为当表格还没有渲染完毕时这个js代码就已经执 ...
代码是在page.ready里面执行的,你看不到贴的代码吗? 您好,因为没有工程文件,我不知道这个js代码是放在页面加载时命令中的呢,还是放在这个js文件中上传的,我的意思是如果这个代码时放在页面加载时命令中的话,他可能会在表格没有渲染时就执行。有可能page还没有呢,这个命令便执行了。您可以上传一下demo,这样我们也可以更好的理解这个问题,也可以更好的帮助到您:loveliness:
Lay.Li 发表于 2021-12-30 15:42
您好,因为没有工程文件,我不知道这个js代码是放在页面加载时命令中的呢,还是放在这个js文件中上传的,我 ...
是在页面加载JS文件中,在正式项目中没有时间去提取一个Demo。
Lay.Li 发表于 2021-12-30 15:42
您好,因为没有工程文件,我不知道这个js代码是放在页面加载时命令中的呢,还是放在这个js文件中上传的,我 ...
测试发现,也并不只是初始加载不出来,当我切换“数据年份”,重新加载数据时,也会存在时不时数据加载显示不出来。 您好,这边没有具体的工程文件,实在是无法分析这个问题鸭:'(这个data每次都正常获取到数据了嘛,无法添加的时候也正常的拿到数据赋值到data了嘛,建议您可以发一个demo,这样我们也可以更好的去解决这个问题:loveliness:
本帖最后由 Lay.Li 于 2022-1-4 14:49 编辑
问题跟进:
您好,这个初始数据不加载的原因是因为在页面加载完毕之后,数据会从数据表中加载数据,就将之前加载的数据冲掉了,造成的现象就是看起来初始addnewrow的方法没有执行。可以通过勾选表格的初始化页面时不加载表格数据,或者将js放置在页面加载时命令中。然后后边的delete没有执行的原因是因为。随着deleteRow方法的执行,总行数,每一行的索引都在不断变化。所以这里这样使用deleteRow去构建clearListView函数即可:loveliness:
function clearListView(lvObj){
var rowCount = lvObj.getRowCount();
for (let rowi = 0; rowi <rowCount ; rowi++) {
lvObj.deleteRow(0);
}
}
页:
[1]