| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > Проблемы с bindingsourse |
| Автор: GUZstav 25.4.2009, 10:51 |
| Доброго времни суток, уважаемые программисты. Проектирую арм на c#, база microsoft sql server 2005. Раньше писал на delphi + access, прошу не судить строго, потому как пишу первое серьезное приложение на c#. У меня следующая проблема: есть две формы, на form1 расположен datagridview, который привязан к bindingsourse соответсвующей таблицы, на ней все правильно отображается, на этой форме есть кнопки "добавить", "изменить", удалить запись. НА второй форме лежат textboxы, comboboxы, привязанные к своему bindingsourse. При нажатии добавить хотелось сделать, что = нить типо этого: public void button2_Click(object sender, EventArgs e) { updatePacient updatePacient1 = new updatePacient(); // это вторая форма updatePacient1.Validate; updatePacient1.t_kartaBindingSource.AddNew; updatePacient1.ShowDialog(this); } И вторая форма открылась бы на новой записи. Вместо этого она открывается на 1й записи. Догадываюсь, что это из=за того, что на каждой форме свой binding sourse и dataset. Бьюсь уже 3 день ничего на ум не приходит. Что касается кнопки изменить. Хотелось бы сделать так, чтобы с form1 я смог бы прередать bindingsorse1.position на 2 форму bindingsorse2.position: bindingsorse2.position=bindingsorse1.position и при открытии 2 формы она бы открывалась на той позици которую я выбрал в datagrid 1-й формы. Я делал аналогичную программу на delphi, там я поступал так: брал номер текущей позиции datagrid на 1 форме, и фильтровал по нему вторую, все работало. Здесь же хотелось бы сделать все грамотно. Зачем мне это надо: хочу уйти от bindingnavigatora и оставить на нем одну лишь кнопку сохранить. Прогу делаю для людей поэтому борюсь за простоту использования. Времени мало, кто знает тыкните пальцем где туплю. Книги читать времени тоже нет. Заранее благодарю.. |
| Автор: -Mikle- 25.4.2009, 12:52 | ||
Если я правильно понял, то вторая форма забивает/отображает/изменяет одну строку какой-то таблицы? Если так, то я бы не делал привязку на второй форме. Вместо этого, я бы передавал DataRow (или DataRowView) второй форме. После нажатия ОК на 2-ой форме записывал бы значения в переданную DataRow. Примерно так:
ИМХО, привязка на 2-ой форме имела бы смысл, если бы она отображала дополнительные сведения, то есть она была бы не модальной и постоянно висела бы, и когда на первой форме выбирали бы запись, то на второй автоматом бы отображалась текущая строка... В твоем случае 2-ая форма это диалог... |
| Автор: GUZstav 25.4.2009, 14:55 |
| ну есть же функция bindingsourse.addnew. как ее вызвать с form1 для updatePacient? и как передать bindingsourse.position для грида на form1 в bindingsourse.position формы updatePacient, чтобы bindingsourse сам выставил данные нужного человека? зачем изобретать велосипед если уже есть встроенные функции? |
| Автор: -Mikle- 25.4.2009, 15:17 |
| Ну ок. Тогда сделай BindingSource 2-ой формы Public (в дизайнере(!) есть такое свойство Modifiers) После этого, BindingSource будет доступен извне: updatePacient.t_kartaBindingSource........... Что делать дальше, думаю уже понятно. ((или нет?)) |
| Автор: GUZstav 26.4.2009, 17:20 | ||
спасибо, догнал, теперь проблема такая
новая запись о человеке добавляется, но на него не переходит, т.е movelast не работает. Подскажите, может надо както обновить |
| Автор: GUZstav 26.4.2009, 17:50 |
| всем спасибо дошло. movelast не работал, т.к были куски кода в форм активэйт, мой тупняк |