Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Guillito en 21 Mayo 2015, 04:48 am



Título: Index was out of range. Must be non-negative and less than the size of the colle
Publicado por: Guillito en 21 Mayo 2015, 04:48 am
Hola, como les va, disculpen que los moleste, me comunico con Uds. a los fines de consultarles sobre el Error que encabeza este foro:

sucede que el mismo se dispara al compilar, y si toco el Edit Item del GridView, el cual arranca en -1, no me soluciona el tema, sino, por el contrario, se aleja de la consecusión de la solución..........

El Error se dispara en esta línea.......(asteriscos y ViewState[]),

El GridView consta de la Columna de Select, y 2 columnas (Año y Sección)........

El tema es saber el por que de este error, y si fuera factible, la forma de solucionarlo.......

Sin mas que agregar, aprovecho la oportunidad de saludarlos muy atte.....

Código
  1. protected
  2.  
  3. void GridCurso_SelectedIndexChanged(object sender, EventArgs e)
  4.  
  5.        {        
  6.  
  7.  
  8. // Se obtiene la fila seleccionada del gridview          
  9.  
  10.  
  11. GridViewRow row = GridCurso.SelectedRow;            
  12.  
  13.  
  14. // Obtengo el id de la entidad que se esta editando          
  15.  
  16.  
  17. // en este caso de la entidad Curso
  18.  
  19.  
  20. *********ViewState["idCurso"] = Convert.ToInt32(GridCurso.DataKeys[row.RowIndex].Value);*********
  21.  
  22.  
  23. //int fila = Convert.ToInt32(GridCurso.DataKeys[row.RowIndex].Value);
  24.  
  25.  
  26.            CargarData();
  27.  
  28.        }
  29.  
  30.  


Título: Re: Index was out of range. Must be non-negative and less than the size of the colle
Publicado por: El Benjo en 21 Mayo 2015, 06:17 am
No estoy del todo seguro, pero es posible que se deba a que por defecto el control GridView coloca el cursor de la Fila actual en una columna editable por el usuario, es decir que el usuario puede añadir una nueva columna. Intenta deshabilitando la propiedad AllowUserToAddRows y ponle un valor FALSE. Si se soluciona, sabes que el error está ahí. Lo siguiente que puedes hacer es colocar una condición if() y comprobar que el índice no sea -1.

Como recomendación: siempre que utilices un método donde dependas del índice seleccionado en un control, comprueba que el índice sea válido. Saludos.