ZK progressmeter 不适用于没有事件的 for 循环
ZK progressmeter is not working with for loop without events
我正在使用 ZK 框架。我只想在我的 MySQL 数据库中插入很多行。插入数据需要几秒钟。在那段时间里,我只想显示一个进度表,告诉用户插入数据库的行数。
我这样试过:
rowCount = qModel.executeInsert();
for(long j = 1; j <= rowCount; j++)
{
sum = sum + 100 / rowCount;
if (j == rowCount)
{
sum = 100;
}
progressMeter.setValue(sum);
countLabel.setValue((rowCount - 1) + " Rows inserted");
BindUtils.postNotifyChange(null, null, countLabel, "_value");
}
这里rowCount
是插入数据库的总行数。我知道在插入过程之后进度表正在更新。
但我希望我的进度表更新时没有忙标签。
如果有人知道解决方案,请帮助我。欢迎所有建议。提前致谢。
其实很简单,
只要你在同一个执行中,你的 GUI 就不会发生更新。
您唯一的解决方案是使用多个调用,通过计时器实现或启用服务器推送。
一切看似复杂,但也有好消息。
Robert Wenzel 写了一篇关于简化长操作的小谈,其中包括简化此操作的全部基础知识。
请看这个:
https://www.zkoss.org/wiki/Small_Talks/2015/January/Simplify_Long_Operation_Handlings
我正在使用 ZK 框架。我只想在我的 MySQL 数据库中插入很多行。插入数据需要几秒钟。在那段时间里,我只想显示一个进度表,告诉用户插入数据库的行数。
我这样试过:
rowCount = qModel.executeInsert();
for(long j = 1; j <= rowCount; j++)
{
sum = sum + 100 / rowCount;
if (j == rowCount)
{
sum = 100;
}
progressMeter.setValue(sum);
countLabel.setValue((rowCount - 1) + " Rows inserted");
BindUtils.postNotifyChange(null, null, countLabel, "_value");
}
这里rowCount
是插入数据库的总行数。我知道在插入过程之后进度表正在更新。
但我希望我的进度表更新时没有忙标签。
如果有人知道解决方案,请帮助我。欢迎所有建议。提前致谢。
其实很简单,
只要你在同一个执行中,你的 GUI 就不会发生更新。
您唯一的解决方案是使用多个调用,通过计时器实现或启用服务器推送。
一切看似复杂,但也有好消息。
Robert Wenzel 写了一篇关于简化长操作的小谈,其中包括简化此操作的全部基础知识。
请看这个:
https://www.zkoss.org/wiki/Small_Talks/2015/January/Simplify_Long_Operation_Handlings