Можете ли вы выборочно включать или отключать «FilterDescriptors» в Silverlight 4? - PullRequest
0 голосов
/ 04 мая 2010

В Silverlight со службами RIA очень просто реализовать простую фильтрацию данных с экземплярами FilterDescriptor.

Однако у меня есть случай, когда у меня есть несколько фильтров, и я хочу включить или отключить их на основе других фильтров.

Кажется, что простое свойство 'Enabled' сделало бы это действительно легким, но его нет.

Есть ли способ достичь этого, не задавая вручную все фильтры, которые мне нужны, каждый раз, когда установлен соответствующий флажок. Возможно подкласс? (У меня еще не было времени попробовать это)

Ответы [ 4 ]

2 голосов
/ 31 июля 2010

Я делаю это, устанавливая для каждого значение -1 по умолчанию, и в FilterDescriptor значение IgnoredValue = "- 1". Вы также можете использовать null или Nothing в зависимости от используемого вами языка. Кен

1 голос
/ 19 ноября 2015

Используйте конвертер, чтобы вернуть конкретное значение (например, 0) для нулевого значения или ничего. Затем используйте 0 в качестве IgnoredValue

1 голос
/ 28 мая 2010

Сортировка / фильтрация / группировка действительно будет простой благодаря использованию «RIA Services DataFilter Control для Silverlight». http://riadatafilter.codeplex.com/

0 голосов
/ 03 августа 2010

Хорошо, вот что я делаю. Я сбрасываю фильтр, затем устанавливаю их, вы можете проходить через них и устанавливать их на что угодно ...

Private Sub AppPickerComboBox_SelectionChanged(ByVal sender As System.Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs) Handles AppPickerComboBox.SelectionChanged
    For fd As Integer = AppTranDomainDataSource.FilterDescriptors.Count - 1 To 0 Step -1
        If AppTranDomainDataSource.FilterDescriptors(fd).PropertyPath = "Application_ID" Then
            AppTranDomainDataSource.FilterDescriptors.Remove(AppTranDomainDataSource.FilterDescriptors(fd))
        End If
    Next fd
    AppTranDomainDataSource.FilterDescriptors.Add(New FilterDescriptor With {.PropertyPath = "Application_ID", .Operator = FilterOperator.IsEqualTo, .Value = AppPickerComboBox.SelectedValue, .IgnoredValue = -1})
End Sub
...