|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||||||||||||
Добавление строки в DataGridView через BindingNavigator02.02.2017, 09:14. Показов 7441. Ответов 10
Метки нет (Все метки)
Привет всем. У меня сейчас голова взорвется от этого C#'па!! Это ужас какой-то. Не могу сделать элементарную вещь. Помогите пожалуйста, я внатуре уже без сил после двух ночей
![]() У меня 2 проблемы. И я никак не могу их решить... Проблема №1: Есть DataGridView, BindingSource, BindingNavigator, DataSet и ToolStripButton. Короче все по стандарту, не буду приводить все контролы сюда, чтобы не засорять конкретную задачу. Ну собственно DataSet хранит таблицу, привязан к BindingSource, который непосредственно привязан к DataGridView, для отображении этой таблицы в нем. BindingNavigator нужен для манипулирования строками, и как раз ToolStripButton является кнопка добавления строки в DataGridView, а из него уже в DataSet. Все отлично работает, при нажатии на ToolStripButton появляется новая строка в DataGridView и я могу ее изменять. Но проблема в том, что я не хочу ее изменять прямо в DataGridView, я хочу при нажатии на эту кнопку сделать форму, где будут textBox'ы, и через них уже добавить строку. Делаю так для осуществлении идеи:
Но как я понял из двух неспавших ночей, добавленная строка является еще на стадии модификации, и поэтому при закрытии программы и открытии заново, она не записывается в базу данных! Да...я забыл сказать, запись в базу у меня происходит при закрытии формы. Так вот, я понял, что мне нужно как-то при добавлении строки сразу проходить валидацию строки. Делаю так:
Проблема № 2: Все те же контролы и формы, как и в первой проблеме, только теперь продолжим нашу идею. При нажатии кнопки добавления строки, возникает форма с textBox'ами и двумя кнопками - Ок и Отмена. Так что же будет если я нажму на Отмена? А я Вам скажу что будет - строка все равно добавится в DataGridView, но пустая, и возникнет исключение, так как столбец id должен быть не null. Тоесть мне нужно, как то отменять операцию добавления строки здесь:
![]() Ребят, я очень надеюсь на Вашу поддержу и помощь... Это уже не серьезно работать две ночи над таким бредом... Помогите пожалуйста
0
|
||||||||||||||||
| 02.02.2017, 09:14 | |
|
Ответы с готовыми решениями:
10
Bindingnavigator и datagridview BindingNavigator и DataGridView Связать dataGridView и bindingNavigator |
|
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
|
||||||||
| 02.02.2017, 13:33 | ||||||||
|
По умолчанию проверка в гриде происходит после того, как измененная строка теряет фокус. Это можно решить, установив CurrentCell в null, но правильнее будет сделать проверку в форме редактирования, чтобы пользователь не терял все введенные данные,а мог исправить ошибку. условие
0
|
||||||||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||||||||||||||
| 03.02.2017, 08:08 [ТС] | ||||||||||||||||||
|
Igr_ok,
Бред в том, что этот обработчик не выполняется если в DataGridView нет строк и я добавляю. Добавлено через 11 часов 52 минуты Короче я так понял эти две проблемы нерешаемые, если я хочу использователь привязку ToolStripButton к свойству AddNewItem объекта BindingNavigator, так как тогда ToolStripButton будет добавлять строку в DataGridView в любом случае, и это действие нельзя отменить. Во-первых, я отвязал ToolStripButton от BindingNavigator. Во-вторых, я завел переменную indexCurrentRow, которая следит за текущей строкой в DataGridView. Изменяется она в этом обработчике:
0
|
||||||||||||||||||
|
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
|
||||||
| 07.02.2017, 03:52 | ||||||
0
|
||||||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 07.02.2017, 08:09 [ТС] | |
|
Aferuga, нет так не будет работать, если кнопка ToolStripButton привязана к BindingNavigator через свойство AddNewItem
0
|
|
|
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
|
||||||
| 07.02.2017, 10:34 | ||||||
|
Извините, не так понял
0
|
||||||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||
| 09.02.2017, 17:06 [ТС] | ||||||
|
Aferuga, хм..а вот надо поглядеть
Добавлено через 19 минут Aferuga, кстати, с Вашим кодом мне придется отвязывать ToolStripButton от BindingNavigator, и тогда понта от этого нет. Ваш код такой же как и мой получается ![]() Добавлено через 10 минут Да, и Вы не написали обработчик, где этот код:
0
|
||||||
|
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
|
|||||||||
| 10.02.2017, 03:55 | |||||||||
Если хотите ещё одна кнопка вызывала форму для добавления просто укажите ей тоже самое событие OnClick
0
|
|||||||||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 10.02.2017, 08:40 [ТС] | |
|
Aferuga, Е-мое. Вы меня не понимаете. Во-первых у меня вот такого в коде явно нет.
Так как вы присваиваете ячейке DataGridView значения. DataGridView - это представления данных. Запись должна происходить через DataSet
0
|
|
|
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
|
||
| 10.02.2017, 09:15 | ||
|
Эта связка работает не только для выгрузки данных но и для добавления/изменения
1
|
||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 10.02.2017, 10:01 [ТС] | |
|
Aferuga, попробую сегодня. Если что, отпишу
0
|
|
| 10.02.2017, 10:01 | |
|
Помогаю со студенческими работами здесь
11
Как связать bindingnavigator и datagridview? DatagridView+bindingNavigator, не сохраняются данные Использование BindingNavigator для нескольких Datagridview Один BindingNavigator для нескольких Datagridview Как использовать Datagridview, BindingSource и BindingNavigator? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|