Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 6

Ошибка: "Индексу -1 не присвоено значение" при выделении ячейки DataGridView

06.06.2016, 11:44. Показов 2461. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Пишу приложение для работы с БД MySQL.
На форму поместил компонент dataGridView1. Создал запрос к БД. Результат вывожу в dataGridView1. Все вывелось. Но стоит мне выбрать какую-нибудь ячейку, то сразу выскакивает сообщение о необработанном исключении и указанием, то индексу -1 не присвоено значение.
Прежде я компилировал проект и этой ошибки не было. Сейчас создал проект с нуля, ошибка осталась. Отчего она появляется и как её устранить?
Вот участок кода, где я обращаюсь к dataGridView
C#
1
2
3
4
dataGridView1.DataSource = null;
            string q = "SELECT * FROM student WHERE group_ = "" + comboBoxGroup.Text + "" and nCreditBook IN (SELECT nCreditBook FROM progress WHERE subject = (SELECT idSubject FROM subject WHERE titleSubject = "" + comboBoxSubject.Text + ""))";
            MyConnection.GetData(q, "student");
            dataGridView1.DataSource = MyConnection.Students;
Метод GetData("запрос", "имя_таблицы")
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
static public void GetData(string queryString, string tableTitle)
        {
 
            MySqlConnectionStringBuilder mySqlCSB;
            mySqlCSB = new MySqlConnectionStringBuilder();
 
            mySqlCSB.Server = "localhost";
            mySqlCSB.Database = "xxx";
            mySqlCSB.UserID = "root";
            mySqlCSB.Password = "1234";
 
            using (MySqlConnection con = new MySqlConnection())
            {
                
                con.ConnectionString = mySqlCSB.ConnectionString;
                con.Open();
                MySqlCommand com = new MySqlCommand(queryString, con);
                
                var reader = com.ExecuteReader();
 
                const string tT1 = "group_";
                const string tT2 = "progress";
                const string tT3 = "student";
                const string tT4 = "subject";
 
                switch (tableTitle)
                {
                    case tT1: //Группы
                        Groups.Clear();
 
                        while (reader.Read())
                        {
                            string GroupTitle = (string)reader["groupTitle"];
                            uint Monitor = (uint)reader["monitor"];
                            //int Monitor = 101;
                            var Gr = new Group(GroupTitle, Monitor);
                            Groups.Add(Gr);
                        }
                        break;
 
                    case tT2: //Успеваемость
                        Progr.Clear();
                        while (reader.Read())
                        {
                            uint nCreditBook = (uint)reader["nCreditBook"];
                            uint idSubject = (uint)reader["subject"];
                            uint nSemester = (uint)reader["nSemester"];
                            var Pr = new Progress(nCreditBook, idSubject, nSemester);
                            Progr.Add(Pr);
                        }
                        break;
 
                    case tT3: //Студенты
                        Students.Clear();
                        while (reader.Read())
                        {
                            uint nCreditBook = (uint)reader["nCreditBook"];
                            string SecondName = (string)reader["secondName"];
                            string FirstName = (string)reader["firstName"];
                            string patronymic = (string)reader["patronymic"];
                            uint semester = (uint)reader["semester"];
                            string group_ = (string)reader["group_"];
                            string department = (string)reader["department"];
                            var St = new Student(nCreditBook, SecondName, FirstName, patronymic, semester, group_, department);
                            Students.Add(St);
                            //MessageBox.Show(SecondName);
                        }
                        break;
 
                    case tT4: //Предметы
                        Subjects.Clear();
                        while (reader.Read())
                        {
                            uint idSubject = (uint)reader["idSubject"];
                            string titleSubject = (string)reader["titleSubject"];
 
                            var Sb = new Subject(idSubject, titleSubject);
                            Subjects.Add(Sb);
                        }
                        break;
                }
                con.Close();                 
 
            }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.06.2016, 11:44
Ответы с готовыми решениями:

Ошибка "Индексу не присвоено значение" при удалении из DataGridView
Всем привет, У меня таблица и хочу удалить в таблице строку и Наткнулся на такую проблему "Индексу 9 не присвоено значение" ...

Ошибка при выделении ячейки DataGridView
Прикрепил небольшой проект, там после добавлении данных в DataGridView, при выделении любой ячейки, падает программа с ошибкой - для...

При выделении ячейки в DataGridView контрол перемещается и становится по правую сторону ячейки
Всем доброе утро. В приложении есть DataGridView и контрол со всеми функциями по управлению данными в DataGridView. При выделении ячейки...

8
140 / 133 / 88
Регистрация: 18.05.2013
Сообщений: 399
06.06.2016, 11:56
Padawan, здравствуйте!
Нужно смотреть обработчик события, которое возникает при выборе ячейки.
0
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 6
06.06.2016, 12:03  [ТС]
atoi, но я не создавал такое событие. У меня в коде Form1 ничего подобного нет. Где, в таком случае, можно это посмотреть?
0
140 / 133 / 88
Регистрация: 18.05.2013
Сообщений: 399
06.06.2016, 12:13
Padawan, посмотрите в отладке, где возникает иключение
0
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 6
06.06.2016, 12:44  [ТС]
atoi, я запустил пошаговую отладку. Пробежал по всем строчкам кода, но когда возникло исключение, меня перекинуло на строчку формы Application.Run(new Form1()); дальше тишина. Я решил попробовать сам создать событие CellClick и оставить его пустым. Но не вышло.
0
140 / 133 / 88
Регистрация: 18.05.2013
Сообщений: 399
06.06.2016, 12:51
Padawan, уберите все брейк-поинты (если есть), нажмите F5 в Visual Studio, выберите какую-то ячейку и смотрите, где возникнет исключение
0
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 6
06.06.2016, 12:59  [ТС]
atoi, вот что выходит
Миниатюры
Ошибка: "Индексу -1 не присвоено значение" при выделении ячейки DataGridView   Ошибка: "Индексу -1 не присвоено значение" при выделении ячейки DataGridView  
0
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 6
06.06.2016, 18:37  [ТС]
atoi, я сейчас решил загрузить данные в dataGridView тем же методом, но только в другом месте. Я поместил запрос в событие загрузки формы. Данные загрузились, я могу щелкать по ячейкам и все отлично. Прежде я загружал данные в событии смены индекса comboBox, после чего и выскакивала ошибка. Не могу понять причины
0
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 6
08.06.2016, 08:53  [ТС]
Нашел странное решение проблемы.
Я не совсем разбираюсь в работе компонентов. А конкретно, что с ними происходит с момента инициализации и до использования.
В общем, последовательность у меня была такая: загрузилась форма, последовательно загрузились списки List<> в компоненты combobox. Для каждого из 4-х combobox был выставлен индекс -1, чтобы по умолчанию в них не было значений.
Но еще на моменте их создания я заметил некоторые странности. Чтобы проверить работу combobox я выводил сообщения через MessageBox.Show(), чтобы увидеть индекс combobox. После загрузки формы и до загрузки данных в combobox индексы скакали: при загрузки формы сразу было сообщение, что индекс combobox был изменен на 0, затем снова на ноль и только третье сообщен говорило, что теперь индекс равен -1.
Загрузка данных в combobox происходила последовательно, при выборе одной что-то грузилось в другую. Вернее, я так хотел, чтобы работало. По факту, они все грузились сразу. Это и вызвало ошибку, потому что данные в dataGridView должны были загрузится только в том случае, когда все 4 combobox сработают последовательно друг за другом.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.06.2016, 08:53
Помогаю со студенческими работами здесь

DataGridView: при выделении ячейки выделять строку
Как сделать что при клике в любую ячейку выделялалась вся строка?

DataGridView. Изменить цвет строки при выделении ячейки
Доброго дня. Есть проблема: В DataGridView (далее - DGV) необходимо реализовать изменение цвета строки, при выделении ячейки. ...

Индексу -1 не присвоено значение
есть класс Employee с несколькими полями через Data source на форму кидаю связанный DataGrid В лист добавляю несколько Employee,...

System.IndexOutOfRangeException: "Индексу -1 не присвоено значение"
Моя проблема заключается в следующем- при запуске программы, изначально, я могу нажимать на заголовки столбцов в flightsDataGridView , но...

Ошибка: "переменной не присвоено значение" при использовании out
Добрый вечер! Не могу разобраться с данным кодом. Помогите, заранее благодарен! Суть проблемы: для массивов pol1,pol2 возникает ошибка:...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru