Создание Windows-приложений на основе Visual C#



   dcc-cis.com admiral x force 145             

Изменение записей - часть 2


}

Запускаем приложение. Теперь можно добавлять и удалять записи — однако все сделанные изменения хранятся в объекте DataSet и не передаются в базу данных. Перезапустив приложение, мы обнаружим, что все записи остались прежними. Добавляем кнопку "Обновить", свойству Name этой кнопки устанавливаем значение btnUpdate. В обработчике кнопки создаем новый объект DataSet changes, в который будут записываться все изменения старого DataSet dsProviders1. Методу Update объекта oleDbDataAdapter1 передаем новый DataSet changes и, наконец, вызываем метод AcceptChanges для подтверждения изменений:

private void btnUpdate_Click(object sender, System.EventArgs e) { DataSet changes = dsProviders1.GetChanges(); oleDbDataAdapter1.Update(changes); dsProviders1.AcceptChanges(); }

Запускаем приложение, вносим новую запись и нажимаем кнопку "Обновить". Возникает ошибка — Additional information: Value cannot be null — "Дополнительная информация, значение не может быть равным нулю". Дело в том, что объект CurrencyManager сохраняет изменения в DataSet после того, как мы перейдем от редактируемой записи к следующей. Но кроме этого, подобная функциональность кнопки "Обновить" нас не может устраивать. Поэтому добавим блок для обработки исключений, который будет проверять наличие изменений в dsProviders1:

Листинг 4.24.

(html, txt)

Теперь, если мы попытаемся внести изменения, не переходя к следующей записи, появится окно предупреждения "Нет записей для изменения". Более того, если связывание с базой данных окажется невозможным, — например, она заблокирована, — то в окне "Неудачное обновление" выйдет сообщение с кодом ошибки. Для того чтобы пользователю не приходилось задумываться о работе CurrencyManager, добавим в код кнопки "Обновить" отключение остальных кнопок на время редактирования записи:

private void btnAdd_Click(object sender, System.EventArgs e) { cmRecords.AddNew(); btnFirst.Enabled = false; btnLast.Enabled = false; btnNext.Enabled = false; btnPrevious.Enabled = false; btnRemove.Enabled = false; btnUpdate.Enabled = false;




Содержание  Назад  Вперед