Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176

DataGridView запрет на внесение записей

20.04.2018, 07:49. Показов 1518. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Есть небольшой проект, разрабатывается для рабочих нужд. На нём имеется несколько dataGridView, которые используются для работы с базой данных. Всё хорошо работает, за исключением одного момента.
В каждой таблице есть "лимит" записей. В первой не больше двух, во второй не больше четырёх...число не важно. Важно то, что я это обрабатываю в событии DataGridView1RowsAdded. Если dataGridView.RowCount>limit то dataGridView.AllowUserToAddRows = false; Вылетает ошибка "Указанный индекс строки находился вне допустимого диапазона. Имя параметра: rowIndex". Бился два дня, что сделать не знаю.
Создал чистый проект, поместил dataGridView с одной колонкой, и сделал обработчик события DataGridView1RowsAdded
C#
1
2
3
4
5
6
7
8
9
10
11
        void DataGridView1RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
        {
            try
            {
            dataGridView1.AllowUserToAddRows = false;
            }
            catch
            {
            }
            
        }
Результат тот-же. Как я понимаю, в параметре e хранится тот самый rowIndex. При добавлении строки в событии он равен 1 (получается 0 строка, что я ввёл и 1-пустая для новой записи) но в этот момент изменяется свойство запрета ввода новых записей на false. Последняя строка удаляется (параллельно вызывая событие DataGridView1RowsRemoved). Но свойство e.RowIndex не изменяется и ошибка вылетает по выходу их обработчика события.
Подскажите, как можно это обойти. Try-catch не помогает. Весь код тестового проекта на изображении.
Проект компилится под .NET4.0 в среде SharpDevelop. Из-за неё проблемы?
Миниатюры
DataGridView запрет на внесение записей  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.04.2018, 07:49
Ответы с готовыми решениями:

Запрет на внесение записей
Добрый день. Пишу протокол на проверку счетчиков газа. Проверяется на нескольких расходах (минимальный, номинальный, максимальный и...

Запрет на внесение информации (по условию)
Подскажите пожалуйста, как сделать чтоб на листе1 нельзя было внести информацию в последующую строку пока не будет внесена информация в...

Внесение изменений через dataGridVIew
Не совсем могу разобраться как внести изменения в бд через dataGridView. Обшарил интернет все же никак не пойму. Имеется таблица в Access...

7
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
20.04.2018, 08:03  [ТС]
VisualStudio2015 на том-же коде выдаёт ту-же ошибку.
Есть ли решение, кроме альтернативы на событии cell_leave?
0
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
20.04.2018, 08:23
Самое простое отрубить изначально добавление записей, а для гридов указать при загрузке формы конкретное количество строк.
0
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
20.04.2018, 08:34  [ТС]
Цитата Сообщение от Aferuga Посмотреть сообщение
для гридов указать при загрузке формы конкретное количество строк.
Это возможно сделать, учитывая, что в dataGridView информация загружается через dataSet, который наполняется dataadapter'ом?
Вы имеете ввиду задать количество через RowCount? Пустые строки игнорируются dataadapter'ом или так-же будут вноситься в БД? в связаном dataset метод haschanges нормально будет обрабатываться, если например в бд строка 1, но через rowcount задаётся 5 ?
Извините, что столько вопросов.
0
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
20.04.2018, 08:41
Цитата Сообщение от the_maksimka Посмотреть сообщение
Вы имеете ввиду задать количество через RowCount?
Да.
Остальное зависит от организации кода и БД.
1
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
20.04.2018, 08:46  [ТС]
Спасибо, вечером попробую.
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
20.04.2018, 09:01
the_maksimka, Уйдите с понятия грида - переходите на понятие - DataTable - и её запрещайте создавать более максимального количества строк. А также - вместо добавления строки в контроле - добавляйте строку в таблице (NewRow()).
1
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
07.05.2018, 05:37  [ТС]
В итоге решил всё поставить в событие cell_leave, там всё работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.05.2018, 05:37
Помогаю со студенческими работами здесь

Перенос записей из оного Dataset в другой и внесение изменений в БД?
Зтравствуйте. Извените за возможно изъезженный вопрос, просто я только начал изучать ADO.NET и мне трудно орентироваться. Почитал...

Внесение изменений в базу данных через DataGridView
При загрузке формы происходит загрузка таблицы из базы данных Access в DataGridView, как осуществить сохранение изменений в бд и обновление...

Внесение записей из файла базы Access в таблицу сервера mssql
Вопрос с которым я хочу обратиться к форуму связана с ПО ms access ms и sql server express, описание ниже. Проблема: На текущий...

Обновить datagridview после внесение изменений в БД с другой формы
Всем привет. Имею 2 формы: 1-я отображает в dgv данные, 2-я принимает выбранную строку для удаления, обновления и добавляет новые...

Удаление всех записей из DataGridView и добавление записей
Всем доброго времени суток. Столкнулся со следующей проблемой: написал код на удаление строк DataGridView. Строки удаляет но не все, а...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru