在Genexus中开发智能设备。我正在使用Load Event将数百条记录(由第三方webService返回)加载到Grid中(某些行可能具有不同的布局)。
当用户点击搜索按钮时,会立即显示ProgressIndicator(在程序执行期间)。当程序结束(检索到数据)时,ProgressIndicator会消失,但网格可能需要4-5秒才能显示新数据。
这会导致用户认为搜索存在问题。然后,意外地,网格刷新。
是否有可能在加载或刷新事件期间以某种方式显示ProgressIndication? 或者您有什么建议可以防止这种行为吗?
答案 0 :(得分:1)
主要问题是刷新和加载事件是SD架构中的“服务器”事件,因此您无权访问设备的API或进度指示器等资源。
我们在iOS 中有相同的要求,我们所做的就是使用GXRefresh事件。
Event 'gxrefresh'
Composite
//Your code. Example: ProgressIndicator.Hide()
EndComposite
EndEvent
Gxrefresh是在刷新和加载后执行的本地事件。 隐藏事件是否有助于我们实现这一目标。 (这不是官方活动,可以在任何版本的GeneXus中取出) 所以解决方案是:
注意:请记住,为了使用gxrefresh事件,您需要添加一个名为“gxrefresh”的隐藏按钮。您可以隐藏该按钮,因为您在UI中不需要它(我们在应用程序栏上将其设置为Visible = false)。
如果因任何原因无法解决该问题(例如gxrefresh事件已被弃用或您正在为Android开发)我可以想到第二个WA根本不优雅但应该可以工作。
这是我能想到的两个选项。 也许有一种更简单的方法,但我没有听说过。 Grid.DidLoad事件对于这种情况非常有用。对于这个问题,我们肯定会有这个或其他解决方案。
链接:
SD Chronometer:http://wiki.genexus.com/commwiki/servlet/hwikibypageid?25058
SD事件:http://wiki.genexus.com/commwiki/servlet/hwikibypageid?17042
服务器端事件:http://wiki.genexus.com/commwiki/servlet/hwikibypageid?24234