![]() |
|
Модераторы: gambit |
![]()
|
|
| Ald |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 31.7.2008 Репутация: нет Всего: нет |
Здравствуйте. Есть 2 формы. На 1 – ой форме расположен dataGridView1 и кнопка при нажатии которой открывается вторая форма. На 2 – ой расположен textBox1 и 2 кнопки, Ок и Cancel. При нажатии кнопки Ок данные из textBox1 заносятся в БД.
Как потом обновить записи в dataGridView1, после нажатия кнопки Ок, чтобы после добавления записи она сразу была бы видна в dataGridView1?
|
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: нет Всего: 67 |
Ald, поюзать DataBinding...
с вопросами "что это такое" - в гугль или в поиск по форуму -------------------- СУВ, Partizan. |
|||
|
||||
| vretsky |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 29.10.2007 Репутация: нет Всего: нет |
создайте датаАдаптер и датаСет как члены класса,проинициализируйте их в конструкторе и напишите метод заполнения грида новыми данными:
|
||||
|
|||||
| Ald |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 31.7.2008 Репутация: нет Всего: нет |
Спасибо за помощь, разобрался.
|
|||
|
||||
| lasar777 |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 19.4.2009 Репутация: нет Всего: нет |
Программу пишу в Vs2005 С++/CLI (Windows forms).
Есть две формы: Form1 и Form2. На Form1 имеется DataGirdView c данными из БД и кнопка Button1. При нажатии на кнопку открывается вторая форма с кучей textBox'ов. В них заносим текстовую информацию и после нажатия на кнопке OK (ОК находится на Form2) вторая форма закрывается, а в базу данных заносится новая строка. Процедура открытия 2 формы проста:
Чтобы все работало в Form1.h подключаем заголовочный файл #include "Form2.h". С процедурой добавления записи в базу данных тоже проблем нет: заполняем текстовые поля, нажимаем кнопку ОК
Проблема в следующем. Чтобы обновить DataGridView, необходимо использовать свойства Form1. Т.е. необходимо подключить в форме "Form2.h" заголовочный файл #include "Form1.h". Если заголовочный файл не подключать, то свойств Form1 из Form2.h компилятор не видит и после закрытия второй формы DataGridView первой формы не меняется несмотря на добавление записи. Но если в Form1 не включать #include "Form2.h", то будет невозможно открыть из первого окна второе. Если подключить #include "Form2.h" в файле Form1, а #include "Form1.h"в файле "Form2.h", то компилятор выдает ошибку
Насколько я смог разобраться, это означает что препроцессор циклично подключает заголовочные файлы. Пробовал прописывать подключения после директивы #pragma once, но это не помогло. Подскажите, пожалуйста, как можно "безошибочно" выполнить обновление DataGridView в первой форме после закрытия второй. |
||||||
|
|||||||
| -Mikle- |
|
||||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 1 Всего: 59 |
Общий подход таков, чтобы не делать вот такого:
Все должно работать автоматом. DataSet должен быть в общей области видимости для всего приложения (в статическом классе, например). Также и вся работа по его заполнению из БД и обновлению БД из него, тоже должна быть там же, где и DataSet. Назовем этот класс, к примеру, DataManager. Далее все просто, в первой форме пишем привязку
во второй форме по кнопке Ок
В DataManager должны находится все необходимые DataAdapter'ы с установленными свойствами SelectCommand, Insert..., Update..., Delete... . Также там будет хранится твой DataSet. Все эти объекты нужно создать и инициализировать только один раз за все время выполнения приложения. Сделай в этом классе методы типа FillИмяТаблицы и UpdateИмяТаблицы. И будет тебе счастье. Добавлено через 4 минуты и 5 секунд Забыл сказать, что такой способ разделения логики работы с БД от логики самого приложения подходит для небольших систем и только для начала. Для больших систем и после получения определенного опыта, более удобно будет применять специальные ORM системы, коих не мало сейчас (мне нравится EntityFramework от Microsoft). -------------------- Если тебе плюют в спину, значит ты впереди... |
||||
|
|||||
| lasar777 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 19.4.2009 Репутация: нет Всего: нет |
Спасибо, -Mikle-! Принцип понятен, сейчас попробую реализовать ))
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |