Я могу напрямую привязать элемент управления DataGridView к списку привязок к моим бизнес-объектам, установив свойство DataSource. Мой бизнес-объект реализует INotifyPropertyChanged, поэтому DGV обновляется при добавлении нового элемента в список привязок или существующий.
Что касается работы с одиночными записями, я могу привязать свой бизнес-объект к текстовым полям и другим соответствующим элементам управления.
Я также могу получить BindingList и создать класс CustomBindingList для реализации необходимых методов IBindable, как описано в приведенной ниже ссылке: http://msdn.microsoft.com/en-us/library/aa480736.aspx
В качестве альтернативы, я видел, как люди рекомендуют использовать BindingSource. BindingSource Datasource - это бизнес-объект, а DGV DataSource - BindingSource.
В любом случае, основываясь на BindingSource, я не предлагаю:
- Фильтрация (фильтр не работает). Реализация должна быть предоставлена мной.
- Сортировка и поиск не работают. Реализация должна быть предоставлена мной.
Итак, почему рекомендуется использовать подход BindingSource?
Изображение большего размера: Является новым для концепций OOPS и С#. Работа с приложениями базы данных. Winforms. До сих пор использовался только подход DataSet/DataTable. Теперь мы пытаемся создать и использовать собственные пользовательские классы.
Обычно имеют форму "Мастер/Деталь". Когда я нажимаю на строку Detail в DGV, я хочу отредактировать эту запись в отдельном окне. Поэтому мне нужно получить дескриптор элемента списка, представленного этой строкой в DGV. Попытка найти решение для этого привела меня к этому вопросу и этому сомнению.
Учитывая то, что я хочу сделать, какой подход лучше и почему?
Некоторые указатели здесь действительно помогут, поскольку я очень новичок в этом.