我正在尝试过滤一个upshot RemoteDataSource。使用setFilter函数,我可以传入一个过滤器数组,但目前无法指定是否要应用( filter1 AND filter2 < / em>),或( filter1 OR filter2 )。查看upshot.js代码,可以清楚地看到原因:
$.each(query.filters, function (index, filter) {
if (filterParameter) {
filterParameter += " and ";
}
filterParameter += applyOperator(filter.property, filter.operator, filter.value);
});
正如您所看到的,“和”被硬编码为upshot。是否还有其他方法可以在过滤器之间支持“或”,还是我必须手动修改内容?如果必须修改,最好的方法是什么,以便在我更新到更新版本的结果时不会丢弃我的修改?
这与ASP.NET forums上的问题相同。
答案 0 :(得分:0)
我知道这是一个可怕的黑客,但你可以做到这一点
self.dataSource.setFilter({
property: "(CustomerId eq 1) or (CustomerId eq 2) and true",
operator: "==",
value: true });
基本上你只需要意识到upshot过滤器在OData $过滤器之上是一个非常漏洞的抽象。因此,在“属性”中,只要以“true == true”结束,就可以编写任何所需的OData过滤器
让我想起了SQL注入技术。我在我的博客http://bartjolling.blogspot.com/2012/04/building-single-page-apps-with-aspnet.html
上介绍了Upshot中的数据操作我的结论是,它还远离为实际商业应用做好准备。