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.