Сетка фильтра DevExpress на основе значения свойства частичного класса EF4 - PullRequest
1 голос
/ 06 августа 2011

Хорошо, так что я немного новичок в DevExpress и прыгаю в середину существующего проекта, который интенсивно использует сетку DevExpress, привязанную к LinqDataSource, и использует встроенную фильтрацию сеток.Вот краткий обзор того, на что я смотрю:

  • Сетка привязана к коллекции сущностей EF4, называемой «Просмотр».
  • Я расширил сущность Просмотр черезчастичный класс, который содержит свойство с именем «IsCurrent».IsCurrent содержит некоторую логику, которая возвращает логическое значение.
  • Исходный источник данных для Grid содержит ВСЕ обзоры, которые может видеть текущий пользователь.
  • Мы использовали встроенную в DevExpress способность сохранять макеты сетки.,Используя построитель фильтров, мы можем фильтровать собственные свойства объекта Review (то есть свойства, которые существуют в модели созданного объекта).Так что, если «Имя» является членом сущности «Просмотр», фильтрация по [Name]='Test' работает просто отлично.

Что я действительно хочу сделать, так это фильтрация, также основанная на свойстве, которое я создал в частичном классе"IsCurrent".Однако, когда я изменяю строку фильтра, которая сохраняется в нашей базе данных, и добавляю [IsCurrent]=true в строку фильтра, я получаю полностью пустой набор результатов.Я попытался переключить его на false, и он все еще пуст.

Можно ли отфильтровать свойство, являющееся членом частичного класса, а не сгенерированной модели сущностей?Если нет, есть ли приемлемый обходной путь?

Вот пример кода, который иллюстрирует некоторые важные части (хотя и чрезвычайно упрощенные):

    protected void LinqServerModeDataSource1_OnSelecting(object sender, 
LinqServerModeDataSourceSelectEventArgs e)
            {
        e.QueryableSource = GetAllRecords();
    }

Review.cs part:

public partial class Review
{
    public bool IsCurrent
    {
       if (something)
           return true;
       else
           return false;
    }   
}

Строка фильтра DevExpress:

filter [IsCurrent] = true

Если я изменю фильтр на: filter [Name =«Тест»], все работает отлично и показывает мне все записи с именем теста.Возвращение к [IsCurrent] = true просто показывает пустой набор.Я точно знаю, что набор результатов содержит действительные данные, которые должны отображаться.

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

Ответы [ 2 ]

1 голос
/ 06 августа 2011

В этой теме сообщества devexpress вы найдете объяснение ограничения использования пользовательских свойств с LinqServerModeDataSource (см. Ответ Vest).Зависит от ваших ограничений, чтобы найти другое решение.

0 голосов
/ 06 августа 2011

Возможно, вам придется заново связать данные или обновить базовые данные после замены фильтра.

...