У меня есть форма захвата для заказа на выполнение работ, и в ней есть элементы управления CustomerBindingSource
и WorksOrderBindingSource
. Большинство полей редактирования привязаны к WorksOrderBindingSource
, а ComboBox, список которого привязан к CustomerBindingSource
, а его SelectedValue
привязан к полю CustomerId
в WorksOrderBindingSource
. Это все очень рутинно и стандартно, тут не до приколов.
Затем у меня также есть несколько полей текстового поля, в которых я использую для отображения свойств выбранного в данный момент клиента для текущего редактируемого заказа на работу. Я также привязал эти поля к CustomerBindingSource
. Когда клиент выбран, в этих полях отображаются свойства этого клиента, как и ожидалось.
Моя проблема заключается в том, что я хочу использовать форму для записи нового заказа на работу. Я создаю новый объект WorksOrder
с CustomerId == null
и привязываю его к WorksOrderBindingSource
. У меня нет объекта в CustomerBindingSource
с Id == null
, поэтому, как и ожидалось, раскрывающийся список пуст, но свойство CustomerBindingSource.Current
указывает на первый объект Customer в этом источнике данных. В полях отображения, связанных с клиентом, отображаются значения для этого клиента, хотя ни один клиент еще не выбран.
Единственный обходной путь для этого, который мне кажется, кажется неуклюжим. В нем у меня есть два источника привязки, типизированные клиентом, один для выбранного клиента и для заполнения полей отображения клиента, а другой просто для заполнения раскрывающегося списка клиента. Затем я должен обработать событие выбора, и только если клиент выбран, затем найти этого клиента в источнике привязки для полей отображения, и если ни один из них не выбран, установить источник данных для полей отображения равным нулю. Это ужасно неуклюже. Есть ли другой способ добиться того, чего я хочу?