Апшот setFilter - PullRequest
       27

Апшот setFilter

0 голосов
/ 21 марта 2012

Я пытаюсь отфильтровать исходный RemoteDataSource. С помощью функции setFilter я могу передать массив фильтров, но на данный момент нет способа указать, хочу ли я применить ( filter1 AND filter2 ) или ( filter1 ИЛИ filter2 ). Из кода upshot.js ясно видно, почему:

$.each(query.filters, function (index, filter) {
    if (filterParameter) {
        filterParameter += " and ";
    }
    filterParameter += applyOperator(filter.property, filter.operator, filter.value);
});

Как видите, "и" жестко закодированы в upshot. Есть ли другой способ поддержки "или" между фильтрами, или мне придется вручную что-то менять? И если нужно изменить, каков наилучший подход, чтобы мои изменения не удалялись при обновлении до более новой версии upshot?

Это тот же вопрос, что и на форумах ASP.NET .

1 Ответ

0 голосов
/ 04 апреля 2012

Я знаю, что это ужасный взлом, но вы можете сделать это

self.dataSource.setFilter({ 
    property: "(CustomerId eq 1) or (CustomerId eq 2) and true", 
    operator: "==", 
    value: true });

По сути, вам просто нужно понять, что фильтр исходящих данных - это очень утечка абстракции поверх фильтра OData $. Таким образом, в «свойстве» вы можете написать любой фильтр OData, который вы хотите, если вы заканчиваете его «true == true»

Напоминает мне о методах SQL-инъекций. Я рассмотрел манипулирование данными в Upshot в своем блоге http://bartjolling.blogspot.com/2012/04/building-single-page-apps-with-aspnet.html

Я пришел к выводу, что это все еще очень далеко от готовности к настоящему бизнес-приложению.

...