Связанные текстовые поля не показывают добавление новой строки

Я использую datagridview, bindingnavigator и текстовые поля, подключенные к источнику привязки (установлен в коде). Когда я выбираю строку в сетке, содержимое отображается в текстовых полях, все хорошо.

txtQty.DataBindings.Add("Text", bsInvoiceDetails, "Detail_Quantity");

Далее я нажимаю на кнопку добавления в обязательном навигаторе. Он добавляет пустую строку в сетку данных, что нормально, но не очищает текстовые поля. Выделенная строка в сетке - это другая строка. Когда я вручную выбираю новую строку, текстовые поля все еще не меняются.

Если я наберу текстовые поля с новой строкой, выбранной в сетке, это фактически изменит значения других строк.

Я не могу понять, почему это наш, как это исправить.

  • Помогите

Обновить:

Запустил запрос, возвратил объект данных... прикрепил его к набору данных... набор данных является источником данных для источника связывания...

dsInvoiceDetails = new 
dsInvoiceDetails.Tables.Add(dtInvoiceDetails);

bsInvoiceDetails.DataSource = dsInvoiceDetails;
bsInvoiceDetails.DataMember = "Invoice_Detail";

Код для подключения сетки и навигатора привязки к источнику привязки...

gridInvoiceDetails.DataSource = bsInvoiceDetails;
bnInvoiceDetails.BindingSource = bsInvoiceDetails;

Источник привязки заполняет текстовые поля выше "автоматически" при выборе строки сетки. Работает отлично.

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

Мне может понадобиться обработать событие "AddingNew" в bindingsource...

Надеюсь, что это поможет определить вопрос немного больше для вас.

Спасибо за помощь.

1 ответ

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

Поэтому я добавил событие, которое срабатывает при добавлении новой строки:

        bsInvoiceDetails.AddingNew += new AddingNewEventHandler(bsInvoiceDetails_AddingNew);

И вот код сработал:

    void bsInvoiceDetails_AddingNew(object sender, AddingNewEventArgs e)
    {
        try
        {
            InvoiceDetail id = new InvoiceDetail();
            id.InvoiceID = invoice.InvoiceID;   // Make sure we are hooked to this invoice.
            id.DetailDate = DateTime.Today;
            id.DetailQuantity = 0;
            id.DetailRate = 0;
            id.DetailTotal = 0;
            id.DetailDescription = "* New Detail Description *";

            e.NewObject = id;
        }
        catch (Exception ex)
        {
            ErrorManager em = new ErrorManager(ex, "InvoiceEditForm.cs", "bsInvoiceDetails_ListChanged", "Adding a new detail item", "sql");
        }
    }

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

Другие вопросы по тегам