Как установить текущую запись BindingSource в значение null?

у меня есть форма захвата для заказа работ, и у нее есть CustomerBindingSource и WorksOrderBindingSource управление. Большинство полей редактирования привязаны к WorksOrderBindingSource, С ComboBox, список которого привязан к CustomerBindingSource, и SelectedValue связан с

2 ответов


Я нашел эту тему именно с моей проблемой, но без удовлетворительного ответа. Я знаю, что это старая тема, но alah..

Я закончил с рабочим решением: я добавил событие [PositionChanged] в свой bindingsource (будет вашим CustomerBindingSource).

        private void CustomerBindingSource_PositionChanged(object sender, EventArgs e)
    {
        if(<yourCombobox>.SelectedIndex==-1)
        {
            CustomerBindingSource.SuspendBinding();
        }
        else
        {
            CustomerBindingSource.ResumeBinding();
        }
    }

то, что я использую для "очистки" BindingSource, - это просто установить его источник данных следующим образом:

CustomerBindingSource.DataSource = typeof (клиент);

надеюсь, что это помогает.

изменить:

для ясности, когда вы устанавливаете BindingSource.Свойство dataSource, как описано, ничто не мешает вам назначить исходных данных на более позднем этапе:

//Retrieve customers from database
List<Customer> Customers = WhatEverCallToDB();
CustomerBindingSource.DataSource = Customers;

...

//Later we need to blank the Customer fields on the Windows Form
CustomerBindingSource.DataSource = typeof(Customer);

...

//Then again at a later point we can restore the BindingSource:
CustomerBindingSource.DataSource = Customers;

...