Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/27: Рейтинг темы: голосов - 27, средняя оценка - 4.96
1 / 1 / 0
Регистрация: 09.04.2009
Сообщений: 18
1

DataGridView на одной форме и TexTBox на другой. Текстбоксы должны обеспечивать редактирование выбранной в гриде строки. Как?

07.12.2009, 19:29. Показов 5308. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеются две формы.
Первая - содержит DataGridView
DataGridView имеет источник данных - это таблица датасета (загружена программно из базы FireBird)

Вторая - содержит несколько TextBox'ов.

Требуется:
При щелчке мышью на гриде (или нажатие на Enter на гриде, не суть важно) открыть вторую форму (открыть её я и сам могу), поместить в текстбоксы на второй форме данные из текущей строки грида.
Пользователь может отредактировать эти данные в текстбоксах, и эти изменения должны отразиться в гриде (т.е. в таблице, которая является его источником данных).

На данный момент я могу это сделать только таким способом.
Запоминаю значение ID (поле таблицы, хранит индивидуальный номер записи) ключевого поля из текущей строки грида, помещаю его в свойство tag второй формы, затем, в событии активации второй формы создаю отдельную строку MyRow as DataRow = MainForm.MyDataSet.Tables("MyTable").Rows.Find("ID"). Потом уж значения из этой строки помещаю в текстбоксы. Чтобы значения в этой MyRow, а соответственно, и в основной MyTable изменились на новые, мне нужно потом снова присваивать значения теперь уже из текстбоксов столбцам строки MyRow.

Коряво всё это...

Как прибиндить данные из MyTable к текстбоксам второй формы?
Прибиндить к созданной MyRow не удаётся, ругается, говорит, что это невозможно.
Можно прибиндить текстбоксы к самой MyTable, но тогда я НУ НИКАК не могу понять, как указать этим текстбоксам, какую (выбранную в гриде запись) нужно отображать.
BindingContext.Position = ?????
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2009, 19:29
Ответы с готовыми решениями:

Передача данных из выделенной строки datagridview в текстбоксы другой формы
Здравствуйте! Мне необходимо передать данные в текстбоксы. Код данной кнопки работает, если не...

Добавление текста из TextBox на одной форме в ComboBox на другой форме
Добрый вечер. У меня небольшая проблема. Я сделал кнопку "Настройки" что бы открывался User Form...

Как сделать, чтобы всё, что писали в TextBox на одной форме перенеслось в Label на другой?
Там вот на 4 форме у меня есть 2 текстбокса и мне нужно то что пишут в них , переходило на 5 форму...

Как сделать редактирование выбранной записи datagridview (коллекция)
Как сделать редактирование выбранной записи в коллекции, и вывод ее измененной в datagridview,...

7
1 / 1 / 0
Регистрация: 09.04.2009
Сообщений: 18
08.12.2009, 14:11  [ТС] 2
Таки никто не в курсе?
Может непонятно изложил?
0
1 / 1 / 0
Регистрация: 09.04.2009
Сообщений: 18
09.12.2009, 14:44  [ТС] 3
Люди! Ну, помогите. Застрял на этой ерунде и не могу программу дальше писать.

Ещё раз, ежели непонятно:

Две формы:
Первая - содержит datagridview, его datasource = MyTable, в MyTable есть поле-ключ ID
Вторая - содержит несколько текстбоксов.

Требуется:
Прибиндить текстбоксы второй формы к MyTable так, чтобы в них отображались данные из текущей строки DataGridView.

Вторая форма открывается только после щелчка мышью по строке DataGridView (обработку щелчка я сам сделаю)

Как прибиндить????
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
10.12.2009, 16:11 4
Используйте BindingSource. Данные привяжите к нему, а его к DataGridView. Во вторую форму передавайте ссылку на этот BindingSource. Т.к. строка выделена, то в свойстве BindingSource.Current будет находится ваша строка. Изменения вносимые таким образом будут автоматически переноситься на первую форму.
1
1 / 1 / 0
Регистрация: 09.04.2009
Сообщений: 18
10.12.2009, 19:00  [ТС] 5
Можно мне пример BindingSource?
Как передать ссылку второй форме? Умею что-то туда передать только посредством свойства tag.
0
1 / 1 / 0
Регистрация: 09.04.2009
Сообщений: 18
11.12.2009, 07:43  [ТС] 6
Сделал так:

В событии formload первой формы:
VB.NET
1
2
FioGridBind = new BindingSource(FioDS, "fiotable")
FioGrid.DataSource = FioGridBind
На второй форме в событии form_activate
VB.NET
1
FamBox.DataBindings.Add("text", MainForm.FioGridBind.Current, "fam")
--------------------------------------------------------
Строка-то биндится и именно та, что надо, да только, видимо, гридовская, а не исходная datatable. Потому, что DataAdapter.update теперь не может сохранить изменения в таблицу базы данных.

Вдобавок: биндить с событии активации второй формы явно неправильно, ибо попытка второй раз открыть вторую форму приводит к ошибке "привязываться можно только к одному свойству".
1
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
13.12.2009, 16:35 7
Цитата Сообщение от novice Посмотреть сообщение
Строка-то биндится и именно та, что надо, да только, видимо, гридовская, а не исходная datatable. Потому, что DataAdapter.update теперь не может сохранить изменения в таблицу базы данных.
Что значит не может? Заболел что ли? Опишите точнее, какое исключение, в какой момент.

Цитата Сообщение от novice Посмотреть сообщение
Вдобавок: биндить с событии активации второй формы явно неправильно, ибо попытка второй раз открыть вторую форму приводит к ошибке "привязываться можно только к одному свойству".
Связывайте в событии Load.


Цитата Сообщение от novice Посмотреть сообщение
Строка-то биндится и именно та, что надо, да только, видимо, гридовская, а не исходная datatable.
Нет такого . Источником данных является DataTable, и данные берутся из него. Но он хранит две версии данных первоначальные и последнее изменение.
0
1 / 1 / 0
Регистрация: 09.04.2009
Сообщений: 18
14.12.2009, 09:42  [ТС] 8
Цитата Сообщение от Green Посмотреть сообщение
Что значит не может? Заболел что ли?
Просто я не знал, что перед закрытием второй формы неплохо бы выполнить FioGridBind.EndEdit(). Теперь вот знаю.

Цитата Сообщение от Green Посмотреть сообщение
Связывайте в событии Load.
А то же самое мне пишет: "Привязываться можно только к одному свойству".

П.С. Спасибо, что уделяете мне внимание.

Добавлено через 12 минут
Цитата Сообщение от novice Посмотреть сообщение
А то же самое мне пишет: "Привязываться можно только к одному свойству".
Поменял SecondForm.ShowDialog() на просто SecondForm.Show и всё стало работать.
Но мне-то нужно, чтобы вторая форма открывалась модально, т.е. до её закрытия не позволяла перейти к другим формам.
И чего делать?

Добавлено через 1 час 16 минут
Как классно, что у меня появился безлимитный интернет и я наконец скачал MSDN!

Me.Dispose() перед закрытием второй формы и всё путём!
Теперь можно открывать её SecondForm.ShowDialog() и не бояться, что мои текстбоксы будут заново биндиться к уже прибинденным данным.

Добавлено через 19 минут
Теперь не знаю, как сделать отмену изменений.
Точнее сделать так, чтобы изменения не попали в таблицу базы данных - это без проблем.
Но эти изменения упорно остаются в гриде.

Пытался сделать FioGrid.ResetCurrentItem() - однако, это что-то не то...

Please, HELP!

Добавлено через 28 минут
FioGridBind.CancelEdit()

Тихо сам с собою я веду беседу...
0
14.12.2009, 09:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2009, 09:42
Помогаю со студенческими работами здесь

Изменение содержимого одной таблицы, в зависимоти от выбранной строки в другой
Доброго времени! Задача состоит в следующем: Есть две панели, на каждой компонент JTable....

Редактирование объектов на одной форме при нажатии кнопки на другой
Помогите пожалуйста. Нужно сделать так чтобы при нажатии кнопки на одной форме редактировались...

Отобразить в textBox на другой форме содержимое из dataGridView
Подскажите пожалуйста как это можно реализовать: Есть форма 1, на ней dataGridView, при выборе...

Сохранение данных в DataGridView через TextBox в другой форме
Всем привет! Имеется DataGridView, в которой отображается база данных SQL. Двойным щелчком по любой...

Сохранение данных в DataGridView через TextBox в другой форме
Всем привет. Помогите разобраться в проблеме. Есть Form3 с DataGridView и Form4 на которой...

Передача данных из dataGridview одной формы в textbox другой
Люди подскажите для передачи данных из dataGridview одной формы в textbox другой использую такой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru