Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/03/2010, 14:37
guidze
 
Fecha de Ingreso: marzo-2010
Mensajes: 7
Antigüedad: 14 años, 1 mes
Puntos: 0
Problema con Index y RowCommand

Hola amigos, soy nuevo por acá, tengo un problema que no he podido resolver y ojala alguien pueda ayudarme.

Resumiendo: Tengo un GridView con un listado de solicitudes, que cargo a través de un DataSet, el cual puede paginar, ordenar y filtrar (todo funcionando OK). Ahora, el problema surge cuando quiero acceder al detalle de una solicitud en particular a traves de un ButtonField para la columna ID, ya que al momento de filtrar u ordenar el Gridview y querer acceder al detalle haciendo click en el ButtonField, los indices y el ID de la fila se mantienen tal y como se cargaron la primera vez, de modo que accede a otro detalle que no corresponde al que estoy intentando ingresar realmente. Por ejemplo:

Cita:
ID | status | fecha | solicitante
1 | OK | 01-01-2010 | juan
2 | noOK | 01-04-2010 | pedro
3 | OK | 02-03-2010 | diego
4 | OK | 03-03-2010 | juan
Supongamos que ese es el GridView la primera vez que lo cargo, hasta ahi todo bien, puedo acceder a los detalles de la solicitud sin ningun problema. Ahora, supongamos que lo filtro por la columna solicitante utilizando a "juan", quedaria algo asi:

Cita:
ID | status | fecha | solicitante
1 | OK | 01-01-2010 | juan
4 | OK | 03-03-2010 | juan
sin embargo, cuando quiero acceder a la solicitud con el ID 4, se carga la solicitud 2, que está "noOK" y fue solicitada por "pedro" y que corresponde al indice de la fila la primera vez que se cargo el GridView. Es como si la ordenacion o el filtro lo hiciera solo "de mentira" para mostrarlo solamente. Yo creo que el problema tiene que ver con el dataBind() tras el filtro o la ordenacion, puesto que genero nuevos datasets o datatables para asociarlos al GridView una vez que he filtrado u ordenado. Por lo demas, el gridview puede ordenar por todas sus columnas , la propiedad DataKeyNames esta asociada al ID y leo el indice de la fila de la siguiente manera:

Cita:
Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim valor As String = GridView2.DataKeys(index).Value.ToString()
Si alguien puede ayudarme, seria de gran utilidad y desde ya, muchas gracias
Saludos