| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > DataBinding ComboBox |
| Автор: avlzll 27.12.2009, 05:00 | ||||||
| Приветствую. Имеется форма на которой расположен комбобокс и куча всяких текстбоксов. Комбобокс заполнен данными из БД так:
Соответственно при смене значения в комбобоксе данные во всех текстбоксах на форме тоже меняются:
Все это дело естественно вызывается сразу при старте программы, чтобы пользователь сразу видел заполненные поля. На этой же форме я прикрутил кнопку "Очистить все поля", которая делает всем полям .Text = string.Empty; и кнопку "Добавить новую запись".
Проблема. Чтобы добавить новую запись надо нажать на Очистку(этот самый комбобокс тоже очищается), ввести значения и нажать на "Добавить". Но когда я после очистки ввожу данные программа все еще думает (и вполне справедливо, кстати), что я изменяю информацию о выбранном в комбобоксе итеме. INSERT в саму базу то проходит без проблем, а вот в датасете получается две одинаковых записи, одна, которая была добавлена кодом из кнопки "Добавить", и вторая, которая получилась затиранием той, которая была выбрана в комбобоксе. Не имею ни малейшего представления как сбросить этот databinding со всех полей на время по-нормальному. В этом загвоздка. После поиска в сети есть предложения: а) добавить пустую строку в сам датасет руками, б) добавить пустую запись непосредственно в бд Эти варианты особо не подходят, т.к. есть еще DataGridView, в котором отображены те же самые данные, и пустая строка там будет выглядеть немного странно, плюс ко всему среди вводимых данных есть еще два внешних ключа, которые естественно not null. В общем... Если кто понял, что я имел ввиду, то может пнете в нужном направлении. А то я уже дошел до того, что придумал в качестве выхода из этой ситуации наплодить еще такиж же точно текстбоксов и на время "Добавления" делать их видимыми, а те, которые были до этого - невидимыми. |
| Автор: avlzll 27.12.2009, 12:59 | ||
Решил тем, что стал сбрасывать Binding со всех полей перед добавлением
и восстанавливать его после. Криво, конечно, но вроде работает как надо сейчас. |
| Автор: thomas 27.12.2009, 13:40 |
| avlzll, Приветствую. Раз вы работаете с DataSet, то рекомендую обратить внимание на этот http://msdn.microsoft.com/ru-ru/library/system.data.common.dataadapter.update.aspx |