Boopalslm Ответов: 3

Индекс был вне зоны досягаемости. Должно быть неотрицательным и меньше размера коллекции. Имя параметра: индекс


Я разрабатываю приложение c# windows с использованием представления сетки данных, я извлекаю свои сохраненные данные для представления сетки, но произошла ошибка. это для моего первого кода столбца,

dgvfind.Columns[0].HeaderText = "SL NO";
                       dgvfind.Columns[0].Name = "SL NO";
                       dgvfind.Columns[0].DataPropertyName = "slno";


но ошибка-это первая строка. Индекс был вне зоны досягаемости. Должно быть неотрицательным и меньше размера коллекции.
Имя параметра: индекс, любой, пожалуйста, направьте меня.

Что я уже пробовал:

Индекс был вне зоны досягаемости. Должно быть неотрицательным и меньше размера коллекции.
Имя параметра: индекс

3 Ответов

Рейтинг:
2

Jochen Arndt

Кажется, что ваш DataGridView не имеет колонн. Неужели вы забыли установить Практическое руководство.Свойство (Системы.Окна.Формы)[^]?


Boopalslm

сэр супер, работает нормально, большое спасибо, я трачу больше 5 часов выше за эту ошибку, большое спасибо.

Boopalslm

сэр, еще одно сомнение, как привязать нулевые значения в текстовом поле,

это мой код привязки текстового поля

txtstaff.Text = dr[0].Метод toString();

значений не показывает. Дайте мне несколько идей. Над текстовым полем, имеющим нулевые значения, и некоторыми строками, имеющими текст.

Jochen Arndt

Это не имеет отношения к первоначальному вопросу. Так что вы должны поднять новый. Тогда и другие здесь увидят это и могут ответить.

Но мне не совсем ясно, к какому типу относятся эти объекты (txtStaff, dr). Поэтому вы должны добавить еще немного информации, когда поднимаете новый вопрос.

Рейтинг:
2

Karthik_Mahalingam

Эта ошибка произошла по двум причинам,
1)либо вы пытаетесь получить доступ к столбцам до того, как источник данных будет назначен представлению datagrid, либо
2) Источник данных может быть нулевым

одна простая проверка делает эту работу

if (dgvfind.DataSource != null && dgvfind.ColumnCount > 0)
            {
                dgvfind.Columns[0].HeaderText = "SL NO";
                dgvfind.Columns[0].Name = "SL NO";
                dgvfind.Columns[0].DataPropertyName = "slno";
            }


Рейтинг:
1

Patrice T

Во-первых, проверьте это dgvfind является ли ожидаемый объект и нет null.
Затем проверьте количество comumns и убедитесь, что у вас есть по крайней мере 1 столбец, прежде чем пытаться получить доступ.