Upshot setFilter

时间:2012-03-21 12:45:52

标签: javascript upshot

我正在尝试过滤一个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上的问题相同。

1 个答案:

答案 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中的数据操作

我的结论是,它还远离为实际商业应用做好准备。