У меня есть DataGridView и список некоторых объектов, которые заполняются из таблицы SQL. Я использовал два способа привязки списка к сетке.

1. Использование списка непосредственно в источнике данных

grdSomeList.DataSource = GetListSomeObjects();

2. Использование через источник привязки

_bsSomeList = new BindingSource();
_bsSomeList .DataSource = GetListSomeObjects();
grdSomeList.DataSource = _bsSomeList ;

Как лучше всего привязать источник данных? Есть ли какие-то конкретные причины за этими двумя?

4
Irshad 19 Мар 2013 в 07:17

1 ответ

Лучший ответ

Используйте первый способ, если его привязка в одну сторону.

Используйте второй способ, если его двусторонняя привязка, то есть, когда пользователи изменяют DataGridView Cells, изменения будут сохраняться / сохраняться в источнике данных GetListSomeObjects().

Вы не указали, является ли это WPF, Winforms, Web, но вы можете прочитать больше на BindingSource и One, Two и т. Д. Привязка:

TwoWay

Заставляет изменения либо исходного свойства, либо целевого свойства автоматически обновлять другое. Этот тип привязки подходит для редактируемых форм или других полностью интерактивных сценариев пользовательского интерфейса.

OneWay

Обновляет свойство цели привязки (target) при изменении источника привязки (источника). Этот тип привязки подходит, если привязанный элемент управления неявно доступен только для чтения. Например, вы можете привязать к источнику, такому как биржевой тикер. Или, возможно, ваше целевое свойство не имеет интерфейса управления для внесения изменений, такого как цвет фона таблицы с привязкой к данным. Если нет необходимости отслеживать изменения целевого свойства, использование режима привязки OneWay позволяет избежать накладных расходов, связанных с режимом привязки TwoWay.

OneTime

Обновляет цель привязки при запуске приложения или при изменении контекста данных. Этот тип привязки подходит, если вы используете данные, для которых подходит либо моментальный снимок текущего состояния, либо данные действительно статичны. Этот тип привязки также полезен, если вы хотите инициализировать целевое свойство некоторым значением из исходного свойства, а контекст данных заранее не известен. По сути, это более простая форма привязки OneWay, которая обеспечивает лучшую производительность в случаях, когда исходное значение не изменяется.

OneWayToSource

Обновляет исходное свойство при изменении целевого свойства. По умолчанию Использует значение режима по умолчанию для цели привязки. Значение по умолчанию различается для каждого свойства зависимости. Как правило, редактируемые пользователем свойства элементов управления, такие как текстовые поля и флажки, по умолчанию имеют двусторонние привязки, тогда как большинство других свойств по умолчанию имеют односторонние привязки. Программный способ определить, связывает ли свойство зависимостей односторонним или двусторонним по умолчанию, является получение метаданных свойства с помощью GetMetadata, а затем проверка логического значения свойства BindsTwoWayByDefault.

5
Jeremy Thompson 19 Мар 2013 в 07:22