找回密码
 立即注册

QQ登录

只需一步,快速开始

gxxp-windfisher

初级会员

25

主题

86

帖子

415

积分

初级会员

积分
415
gxxp-windfisher
初级会员   /  发表于:2018-1-22 14:30  /   查看:4637  /  回复:7
假如现在有10000条数据,每次加载1000条数据,当鼠标滚动到900行的时候,需要分页请求服务器返回第二页的1000条数据回来,那么,此时应该用什么方法可以不覆盖之前的1000条数据,继续在EXCEL中绑定第二页数据?加载方法时用了表单绑定的方式,返回的第二页数据绑定方式能沿用表单的绑定。

6 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-1-22 16:59:54
沙发
您好:

您直接在修改数据源,直接在数据源中进行追加即可。
回复 使用道具 举报
gxxp-windfisher
初级会员   /  发表于:2018-1-23 10:39:07
板凳
直接修改数据源追加是什么意思?不是太明白,我现在的做法是初始load的时候用setDataSource,追加的时候,重新绘制表格,新增row,然后用setText追加内容。您所说的这个数据源中追加在帮助文档中是有示例的吗?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-1-23 11:20:50
地板
参考附件的demo做法,添加行后获取datasource,然后在datasource中修改信息,之后重绘即可。

DataSourceaddRow.html

1.62 KB, 下载次数: 345

回复 使用道具 举报
gxxp-windfisher
初级会员   /  发表于:2018-1-23 14:08:44
5#
好的,谢谢
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-1-23 15:15:37
6#
不客气,有什么问题欢迎另开新帖进行询问。
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2023-8-16 11:48:55
7#
本帖最后由 Richard.Huang 于 2023-8-16 11:53 编辑

批量滚动加载可以通过监听TopRowChanged事件来实现,当新的top行索引到达一个阈值就去datasource中增加新的数据即可。

值得注意的是,因为SpreadJS对于数据绑定的设计是双向绑定的,当您修改sheet时,datasource也会发生改变,当您修改datasource时,sheet也会发生改变,因此,对于数据数组不能简单的使用push来解决该问题,只能通过for循环用数组的索引去添加内容

例如:
// 获取当前已经加载的数据量
var rowcount = sheet.getRowCount();

// 增加数据需要的行数
sheet.addRows(rowcount, 15);
var datasource = sheet.getDataSource();

// 循环增加数据
for (var i = 0; i < 15; i++) {
    datasource[i + rowcount] = newdata;
}

也许您会对for循环的性能问题有所疑问,但是daixiofu,没有问题的,经过测试,每次动态加载1w行数据根本没有感觉

动态滚动加载1w行数据.rar

1.7 MB, 下载次数: 49

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部