válidos valores valor ser parámetro ocultar nombre negativo intervalo inferior indice index fuera está estaba esta especificado debe columna argumento c# visual-studio-2008 datagridview datatable

c# - valores - El índice estaba fuera de rango. Debe ser no negativo y menor que el tamaño de la colección



ocultar columna datagridview c# (3)

El error es: el índice estaba fuera de rango. Debe ser no negativo y menor que el tamaño de la colección.

Escenario: tengo una aplicación de escritorio que carga archivos XML y muestra los datos en Grid. Ahora, quiero insertar otro archivo y quiero agregar los datos en ambos archivos. Pero cuando trato de fusionar los datos (me refiero a agregar las filas a DataTable que tiene filas de archivos abiertos anteriormente) ... recibo este error.

if (strPreviousFile != "") { dgvBooksDetails.DataSource = dtBooks; int intCurrentRows = dgvBooksDetails.Rows.Count; intBooksCounter = intBooksCounter + intCurrentRows; for (int c = intCurrentRows; c < intBooksCounter; c++) { Book objBook = new Book(); objBook.ID = BookID[c]; objBook.Title = BookTitle[c]; objBook.Author = BookAuthor[c]; objBook.Genre = BookGenre[c]; objBook.Price = Double.Parse(BookPrice[c]); objBook.PublishDate = DateTime.Parse(BookPublish_Date[c]); objBook.Description = BookDescription[c]; dtBooks.Rows.Add(objBook.ID, objBook.Title, objBook.Author, objBook.Genre, objBook.Price, objBook.PublishDate, objBook.Description); } }

¿Cómo puedo superar este error?


Asegúrese de que sus matrices ( BookTitle , BookAuthor , BookGenre , BookPrice , BookPublish_Date y BookDescription ) tengan la longitud correcta (mínimo intBooksCounter).


Bueno, parece que tienes una matriz n larga y estás tratando de acceder al enésimo o mayor elemento dentro de ella. Los índices están basados ​​en 0, por lo que se debe acceder a una matriz de n tamaños mediante los índices 0 a n-1 .


La línea que causa problemas es esta:

int intCurrentRows = dgvBooksDetails.Rows.Count;

Tomas este valor como inicio para tu ciclo. Sin embargo, la colección de filas cuenta desde 0 hasta Count-1 , por lo que usar Count para acceder a un valor de la colección de filas provoca un error de índice fuera de límites.

Otra cosa: BookTitle , BookTitle , etc. también se indexan de 0 a Count-1 (o Length-1 si son matrices). No estoy seguro de lo que nos has contado, pero ¿estás seguro de que se puede acceder a estas colecciones indexando de la forma en que lo haces? Quiero decir, ¿podría ser que solo contengan los elementos que se agregarán y por lo tanto deben ser indexados de 0 a X en vez de number of existing items para el number of existing items + number of new items (eso es lo que haces en tu código)?