Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/03/2007, 16:00
Avatar de pmuruaga
pmuruaga
 
Fecha de Ingreso: diciembre-2005
Mensajes: 127
Antigüedad: 19 años, 3 meses
Puntos: 0
Problema con un par de dataset que se tranfieren datos.

El programita consiste en lo siguiente: Levanta datos de una tabla (nombres) y los coloca en un datagridview. Hay dos botones en el medio uno para agregar y otro para quitar. La idea es que al presionar en agregar el/los datos seleccionados desde datagridview de la izq pasen al de la derecha y al presionar quitar haga lo inverso.
Mi solucion fue la siguiente sub:
Código:
Public Sub pasarDeUnDataSetAOtro(ByVal origen As DataGridView, ByVal destino As DataGridView)
        Dim cuantasSelecciono As Integer
        cuantasSelecciono = origen.Rows.GetRowCount(DataGridViewElementStates.Selected)
        Dim ds_origen As DataSet = origen.DataSource
        Dim ds_destino As DataSet = destino.DataSource

        If cuantasSelecciono > 0 Then
            Dim i As Integer
            For i = 0 To cuantasSelecciono - 1
                Dim filaACopiar As DataRow = ds_origen.Tables(0).Rows.Item(origen.SelectedRows(i).Index())
                ds_destino.Tables(0).ImportRow(filaACopiar)
                ds_origen.Tables(0).Rows.Remove(filaACopiar)
            Next
        End If
    End Sub
pero quiero depurarlo un poco, los problemas que me surgen son los siguientes:
-Paso varios datos juntos, 5 luego otros 5 y de repente me salta un problema: El indice estaba fuera del rango.
-Al hacer la consulta levanto los datos ordenados por apellido por ejemplo. Si en el datagridview los ordeno por nombres, al queres pasar un datos, me pasa otro diferente.
-Lo mismo si realizo la operacion inversa.
Alguien podria darme una mano para mejorarlo. Gracias.