Правильный способ использования DataGrid при использовании таблицы DataQtext LINQ2SQL в качестве ее ItemsSource (лучшие практики) - PullRequest
2 голосов
/ 22 февраля 2011

Итак, я изучаю Linq2SQL, создав простой интерфейс. Я использую две DataGrids для отображения интерфейса типа основной / подробности, где «Клиенты» отображаются в одной сетке, а при выборе некоторые детали отображаются в другой сетке (например, записи из таблицы внешнего ключа, такие как «Заказы»). , что угодно).

Теперь каждый пример, который я прочитал относительно использования DataGrid, показывает что-то вроде этого:

using( var db = new TestDataContext() )
{
    // AutoGenerateColumns set to false and 
    // column bindings set to certain properties 
    // of the Customer class.
    grid.ItemsSource = db.Customers.ToList();
}

Что ж, это не работает, потому что DataContext доступен после выполнения этого кода из-за привязки данных, и, конечно, объект Context уже был удален. Хорошо, это нормально; Я могу использовать один DataContext для всех моих операций с сеткой, хотя класс DataContext был разработан для быстрого использования и удаления. Я не уверен, что хранение одного DataContext покажет меня в будущем.

Так что теперь я столкнулся с проблемой обновления базы данных и отражения этих изменений в сетке (ах). Самый простой способ, с которым я столкнулся, - установить ItemsSource в ноль, а затем привязать его еще раз к таблице. Мне это кажется «грязным», и я должен представить, что что-то упустил. Теоретически я мог бы использовать ObservableCollection и связать его с сеткой, поддерживая ее синхронизацию с базовыми данными, но я еще не понял, как заставить сетку отображать данные из наблюдаемой коллекции (я связываю ее в XAML и в таблице отображаются только пустые строки).

TLDR:

Так или иначе, мой вопрос таков; Какие шаблоны вы, как вы знаете, использовали в LINQ2SQL для этого типа сценария? Кажется, что все примеры, которые я могу найти, являются чрезмерно упрощенными и не совсем применимы в реальном случае использования (даже один такой простой, как мой). В основном, как вы используете свой DataContext, как вы обновляете сетку при добавлении новых элементов в таблицу, и каковы некоторые общие рекомендации здесь?

1 Ответ

2 голосов
/ 23 февраля 2011

В приведенном вами примере кода привязка к текстовому тексту будет снова доступна только при привязках, если вы привязываетесь к лениво загруженным свойствам.Вы смотрели на функцию LoadOptions.LoadWith <> () в текстовом тексте данных (при условии, что она не была переименована с тех пор, как я в последний раз смотрел на linqtosql)

Лично у меня нет проблем с захватом текстового текста и сохранениемэто вокруг жизни страницы, хотя ни одного за всю жизнь приложения.

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