我在Lighswitch应用程序中有一个包含数据的网格。网格在每个列都具有过滤列的可能性。感谢lsEnhancedTable
现在我正在向web api控制器发送一个ajax请求,其中包含我要导出的Customers列表。它工作但是有很多数据它很慢,因为我必须关闭数据的分页以获得所有可见的客户id,所以我可以迭代VisualCollection。
为了优化这一点,我必须将数据的分页打开到50条记录,这样初始加载速度很快,并将数据加载移动到save / export to excel按钮。
可能的解决方案:
下面的代码锁定了UI线程,因为loadMore是异步的。如何同步加载所有数据?理想情况下,我想使用msls.showProgress获得某种进度视图。
while(3<4)
{
if (screen.tblCustomers.canLoadMore) {
screen.tblCustomers.loadMore();
}
else
break;
}
var visibleItemsIds = msls.iterate(screen.tblCustomers.data)
.where(function (c) {
return c;
})
第二种方法是打开分页并仅将用户应用的过滤器传递给web api控制器,这样我就可以查询数据库并只返回过滤后的记录。但我不知道该怎么做。
第三种方法是我现在正在使用的方法。关闭分页 - &gt;迭代视觉集合,获取客户ID,将它们传递给控制器并返回过滤后的Excel。当有大量记录时,这种方法效果不佳。
在服务器端迭代过滤集合?我不知道Lighswitch是否有办法做到这一点?
答案 0 :(得分:0)
这是客户端javascript的选项。
//首先构建OData过滤器字符串。
var filter = "(FieldName eq " + msls._toODataString("value", ":String") + ")";
//然后查询数据库。
myapp.activeDataWorkspace.ApplicationData.[TableName].filter(filter).execute().then(function (result) { ... });