TableAdapter.Update не работает - PullRequest
       17

TableAdapter.Update не работает

1 голос
/ 23 марта 2010

Вот моя функция:

    private void btnSave_Click(object sender, EventArgs e)
    {
        wO_FlangeMillBundlesTableAdapter.Update(invClerkDataDataSet.WO_FlangeMillBundles);
        wO_HeadMillBundlesTableAdapter.Update(invClerkDataDataSet.WO_HeadMillBundles);
        wO_WebMillBundlesTableAdapter.Update(invClerkDataDataSet.WO_WebMillBundles);
        int rowsaffected = wO_MillTableAdapter.Update(invClerkDataDataSet.WO_Mill);

        MessageBox.Show(invClerkDataDataSet.WO_Mill.Rows[0]["GasReading"].ToString());
        MessageBox.Show(rowsaffected.ToString());
    }

Вы можете видеть, что четвертое обновление в функции использует ту же функциональность, что и остальные, я просто добавил некоторые отладочные материалы. Первые три таблицы привязаны к DataGridViews и работают нормально. Четвертая таблица содержит элементы, связанные с различными текстовыми полями.

Когда я изменяю значение в текстовом поле, привязанном к столбцу GasReading, и нажимаю кнопку Сохранить, первый MessageBox действительно показывает новое значение, поэтому он корректно входит в набор данных. Тем не менее, в строке всегда отображается 0, а значение в фактической базе данных не обновляется.

Кто-нибудь может увидеть мою проблему? Я понимаю, что проблема должна быть в другом месте моего кода, поскольку четыре метода обновления одинаковы, но я просто не знаю, с чего начать.

Вот мой обязательный код:

        txtHours.DataBindings.Add("Text", invClerkDataDataSet.WO_Mill, "HoursRun");
        txtGasReading.DataBindings.Add("Text", invClerkDataDataSet.WO_Mill, "GasReading");
        txtDelayMins.DataBindings.Add("Text", invClerkDataDataSet.WO_Mill, "DelayMins");
        txtGapMins.DataBindings.Add("Text", invClerkDataDataSet.WO_Mill, "GapMins");

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

1 Ответ

3 голосов
/ 23 марта 2010
  1. Рекомендуется вызвать wO_MillDataSource.EndEdit() до Adapter.Update ().Чтобы вытащить все изменения из элементов управления.

  2. Если между 4-й таблицей и одной из других есть отношения внешнего ключа, вам придется разделить действия Вставить / Обновить и Удалить или использовать TableAdaptermanager

...