Как я могу позволить пользователю сортировать столбцы в таблице данных LINF-to-SQL WPF? - PullRequest
0 голосов
/ 24 марта 2009

Я успешно настроил WPF Datagrid с помощью March 2009 WPF Toolkit , создал классы LINQ-to-SQL из базы данных Northwind, связал сетку WPF с помощью этого кода:

var customers = from c in _db.Customers
                select c;
TheDataGrid.ItemsSource = customers;

Я могу перемещать столбцы слева направо, заставить работать столбцы и т. Д.

Однако, когда я щелкаю заголовок столбца, чтобы отсортировать его, в моем окне «Вывод» появляется около 20 пар ошибок, похоже, что для каждого столбца есть пара ошибок:

Ошибка System.Windows.Data: 1: невозможно создать конвертер по умолчанию для выполнять «двусторонние» преобразования между типы 'System.Data.Linq.EntitySet`1 [TestDataGrid566.Model.Order] и 'System.String'. Рассмотреть возможность использования Свойство конвертера Binding. BindingExpression: Path = Заказы; DataItem = 'Клиент' (HashCode = 4925117); целевой элемент 'TextBlock' (Name = ''); целевое свойство is 'Text' (тип 'String')

Ошибка System.Windows.Data: 5: Значение, созданное BindingExpression, равно не действует для целевой собственности .; Значение = 'System.Data.Linq.EntitySet`1 [TestDataGrid566.Model.Order] BindingExpression: Path = Заказы; DataItem = 'Клиент' (HashCode = 4925117); целевой элемент 'TextBlock' (Name = ''); целевое свойство is 'Text' (тип 'String')

Когда я создавал классы LINQ-to-SQL, я просто перетаскивал все таблицы из базы данных в конструктор моделей и сохранял их, поэтому все классы являются кодом по умолчанию.

Что эти ошибки говорят мне? Я просто не правильно настроил классы LINQ-to-SQL или это указывает на что-то более глубокое?

1 Ответ

4 голосов
/ 24 марта 2009

Я думаю, вы должны преобразовать свой запрос в список.

var customers = from c in _db.Customers
                select c;
TheDataGrid.ItemsSource = customers.ToList(); //note the .ToList() call

В противном случае DataGrid пытается пересчитать запрос, что является плохой идеей, поскольку результатом запроса является загруженная коллекция с отложенной загрузкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...