Foros del Web » Programación para mayores de 30 ;) » .NET »

Pasar datos de un grid a otro

Estas en el tema de Pasar datos de un grid a otro en el foro de .NET en Foros del Web. Hola a todos necesito pasar unos datos de un grid a otro. La ideas es la sigueinte: De un grig (dgProductos) que tienen la columns(0) ...
  #1 (permalink)  
Antiguo 15/04/2005, 09:22
Avatar de ahoshy  
Fecha de Ingreso: abril-2005
Mensajes: 17
Antigüedad: 19 años
Puntos: 0
Exclamación Pasar datos de un grid a otro

Hola a todos necesito pasar unos datos de un grid a otro. La ideas es la sigueinte:
De un grig (dgProductos) que tienen la columns(0) con un check, todas las filas qeu esten seleccionadas en la columna check pasen a otro grid cuando presione un boton(btnagregar) a otro grid (dgCompra).

yo trate de pasar por lo menos una fila al otro pero no me los pone bien

dbCompra.DataSource = dgProductos.Items(2).Cells(2).Text
cdCompra.DataBind()

ejemplo:
en mi grid dg Prducto el Item queda asi:
L
A
P
I
Z
en lugar de quedar en una solo fila LAPIZ.

Que puedo hacer??
De antemano Muchas gracias
  #2 (permalink)  
Antiguo 15/04/2005, 10:15
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Puedes hacer, cuando pulses el botón
meter las filas seleccionadas en un DataTable
y una vez este el dataTable completo meterlo como datasource de dbCombra
  #3 (permalink)  
Antiguo 15/04/2005, 11:17
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Preguntale al usuario phinojosa... el man sabe
  #4 (permalink)  
Antiguo 15/04/2005, 11:36
Avatar de ahoshy  
Fecha de Ingreso: abril-2005
Mensajes: 17
Antigüedad: 19 años
Puntos: 0
Tampoco

Ya lo intente pasandoselo a un data table y sigue mostrandomelo en forma vertical.

Private Sub btnAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregar.Click


Dim DataTable = dgProductos.Items(2).Cells(2).Text
dgCompra.DataSource = DataTable
dgCompra.DataBind()

y el resultado sigue siendo:
L
A
P
I
Z
en lugar de ser LAPIZ.
alguna otra sugerencia???

GRACIAS POR LA RESPUESTA Jose Minglein2.
  #5 (permalink)  
Antiguo 15/04/2005, 11:45
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Insisto... preguntenle a phinojosa. Yo no se porque no me hacen caso
  #6 (permalink)  
Antiguo 15/04/2005, 12:41
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
Insisto... preguntenle a phinojosa.
En fin... lo que puedes hacer es crear un datatable a mano y crear las columnas que necesitas que en este caso serían 5 (lapiz) con una sola fila, y despues ese resultado se lo pasas a tu grid...

Espero que me hayas entendido.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #7 (permalink)  
Antiguo 15/04/2005, 13:22
Avatar de ahoshy  
Fecha de Ingreso: abril-2005
Mensajes: 17
Antigüedad: 19 años
Puntos: 0
phinojosa

Otra vez yo molestandolos, al usuario phinojosa no lo encuentro en el directorio de usuarios, ni no veo en linea. como lo puedo contactar????



Con respecto a mi duda el problema no se reduce a solo pasar el datatable de un registro con 5 (LAPIZ) es pasar todos los items(n) seleccionados en un CHECK hacia el otro grid. El ejemplo del LAPIZ es solo para mostrar lo que hasta el momento e podido pasar, espero que me haya explicado..

Gracias a todos por sus respuestas

Saludos !!!!
  #8 (permalink)  
Antiguo 15/04/2005, 13:32
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Primero teneis que especificar bien que es lo que tienes, hasta donde ya tienes hecho, tienes que crear una columna de tipo template en el grid, y desarrollar el codigo de la funcion OnChangeHandler, para cambiar el estado de marcado a desmarcado y en el dataset, luego en el boton para llenar el otro datagrid, lo que tienes que hacer es llenar otro dataset con los campos que en el primer dataset estan marcados, esto lo puedes hacer creando un DataTable y en un ForEach añadir row por row en el nuevo dataset para finalmente hacer un DataBind en el nuevo grid y sorpresa!
  #9 (permalink)  
Antiguo 15/04/2005, 13:46
 
Fecha de Ingreso: enero-2002
Mensajes: 29
Antigüedad: 22 años, 4 meses
Puntos: 0
intenta esto:

dim i as integer
dim StrVar as string

for i =0 to tablaorigen.rows.count-1
strvar = strvar & dgProductos.Items(i).Cells(2).Text
next

Suerte.
  #10 (permalink)  
Antiguo 18/04/2005, 00:43
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
primero creas un datatable diciendo las columnas que quieras, segundo, para recorrer el datagrid y comprobar los que tienes marcados lo haces con un bucle, después como dice rootk, tienes si está seleccionado creas las filas y la añades al datatable, es decir,

dim fila as tablrow = MyDataTable.NewRow
fila("columna1") = DataGrid.Items(i).Cells("1").Text
fila("columna2") = DataGrid.Items(i).Cells("2").Text
...

y una vez construido de esta manera asignarlo como DataSource al otro DataGrid.
  #11 (permalink)  
Antiguo 19/04/2005, 09:11
Avatar de ahoshy  
Fecha de Ingreso: abril-2005
Mensajes: 17
Antigüedad: 19 años
Puntos: 0
Hola de nuevo la verda ya me da hasta pena preguntar pero en verdad que no entiendo bien la forma para resolver el problema. Por favor si me pueden orientar un poco mas con codigo se los agradeceria.
  #12 (permalink)  
Antiguo 19/04/2005, 14:24
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Dim mytable as datatable
mytable .Columns.Add(New DataColumn("columna1"))
mytable .Columns.Add(New DataColumn("columna2"))
dim i as integer = 0
while i<dgProductos.Items.Count
if ctype(dgProductos.Items(i).Items(0), checkbox).Checked
dim fila as tablrow = mytable.NewRow
fila("columna1") = dgProductos.Items(i).Cells("1").Text
fila("columna2") = DataGrid.Items(i).Cells("2").Text
...
mytable.rows.add(fila)
end if
i+=1
end while

DgCompra.DataSource = mytable
DgCompra.DataBind()

más o menos será así, dependerá de tus grid, pero esa es la idea
  #13 (permalink)  
Antiguo 21/04/2005, 10:46
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
te sirvio el codigo ahoshy??
  #14 (permalink)  
Antiguo 21/04/2005, 12:08
Avatar de ahoshy  
Fecha de Ingreso: abril-2005
Mensajes: 17
Antigüedad: 19 años
Puntos: 0
Que tal Jose minglein2, mira puse el codigo en el boton de agregar, y me marco algunos errores asi lo deje:
__________________________________________________ _________________


Private Sub btnAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregar.Click

Dim temp As DataTable

temp.Columns.Add(New DataColumn(1))
temp.Columns.Add(New DataColumn(2))
Dim i As Integer = 0
While i < dgProductos.Items.Count
If CType(dgProductos.Controls.Item(i), CheckBox).Checked Then

Dim fila As TableRow = temp.NewRow '''''''*aqui me marca Value of type "System Data.DataRow" cannot be converted to "System Web.UI.WebControls.TableRow"

'''''''*En estos dos me marca:
Class "System Web.UI.WebControls.TableRow" cannot be indexed because it has no default property.

fila(1) = dgProductos.Items(i).Cells(1).Text
fila(2) = dgProductos.Items(i).Cells(2).Text

temp.Rows.Add(fila) ''''''* Este marca overload resolution failed because no accessible 'Add' . End If
i += 1
End While

dgCompra.DataSource = temp
dgCompra.DataBind()

end sub

Cual es el error que estoy cometiendo, gracias por tu ayuda, un cordial saludo.
  #15 (permalink)  
Antiguo 21/04/2005, 15:22
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
dim fila as datarow (perdón mea culpa)

Creo que es por eso, aunque lo mirare mañana con mas detalle
  #16 (permalink)  
Antiguo 21/04/2005, 15:52
Avatar de ahoshy  
Fecha de Ingreso: abril-2005
Mensajes: 17
Antigüedad: 19 años
Puntos: 0
Saludos foro!!!
Muchas gracias Jose_minglein2 por tu respuestas.

Private Sub btnAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregar.Click

Dim temp As DataTable


temp.Columns.Add(New DataColumn(1))
temp.Columns.Add(New DataColumn(2))
Dim i As Integer = 0
While i < dgProductos.Items.Count
If CType(dgProductos.Controls.Item(i), CheckBox).Checked Then

Dim fila As DataRow = temp.NewRow

fila(1) = dgProductos.Items(i).Cells(1).Text Ahora me marca error en esta linea. Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

fila(2) = dgProductos.Items(i).Cells(2).Text

temp.Rows.Add(fila)
End If
i += 1
End While

dgCompra.DataSource = temp
dgCompra.DataBind()

end sub



ojala lo puedas checar, te agradesco mucho la atencion y la ayuda que estes muy bien, saludos.
  #17 (permalink)  
Antiguo 21/04/2005, 23:47
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
tienes la opcion de ejecutarlo paso a paso??Si es así, intenta ver que es nothing si fila(1) o dgProducts.Ite.... porque podria ser que fuese dgProductos, si es así podrías hacer:

try
If CType(dgProductos.Controls.Item(i), CheckBox).Checked Then

Dim fila As DataRow = temp.NewRow
...
end if
catch ex exception

end try
i+=1
  #18 (permalink)  
Antiguo 22/04/2005, 08:36
Avatar de ahoshy  
Fecha de Ingreso: abril-2005
Mensajes: 17
Antigüedad: 19 años
Puntos: 0
Buen dia

hola parece que el problema esta casi resuelto solo faltaria un pequeño detalle:

Try
If CType(dgProductos.Controls.Item(i), CheckBox).Checked Then 'En esta linea me marca el error
Specified argument was out of the range of valid values. Parameter name: index
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentOutOfRangeException: Specified argument was out of the


Dim fila As DataRow = temp.NewRow

fila(1) = dgProductos.Items(i).Cells(1).Text
fila(2) = dgProductos.Items(i).Cells(2).Text

temp.Rows.Add(fila)
End If
Catch IOExcep As System.IO.IOException
End Try
i += 1
End While

El codigo sigue estando en el boton, pero me marca error al momento de checar el Ctype de dgproductos, ya lo demas creo que no sera problema.
Saludos y muchas gracias por la ayuda al foro en especial a Jose_minglein2 por toda su ayuda.
  #19 (permalink)  
Antiguo 22/04/2005, 09:51
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
If CType(dgProductos.Items(i).Cells(numero), CheckBox).Checked then...

siento numero, el número de columna en la que están los checks, xq si haces lo que tu, el bucle va por ejemplo por i = 37 y sin embargo controls, no tiene tantos items, ya que en el while es: while i< dgProductos.Items.Count

si no tendrás que poner :
while i < dgProductos.Controls.Count

y en el if

CType(dgProductos.Controls(i).Item(numero), CheckBox).Checked

pero creo que en este caso numero difiere del numero de columna, y tendrías que depurar paso a paso, hasta averiguar cual es el numero de item del checkbox, ok???


Suerte y espero que esta sea la definitiva

Y perdona por no haberte dado una solución desde un principio, pero nunca había usado datagrids y todo ha sido esperimental.
  #20 (permalink)  
Antiguo 22/04/2005, 12:12
Avatar de ahoshy  
Fecha de Ingreso: abril-2005
Mensajes: 17
Antigüedad: 19 años
Puntos: 0
Que tal buenas tardes al foro:
Aqui con la novedad de que ya quedo resulto el problema de pasar los datos de un grid a otro les dejo el codigo haber si le sirve a alguien mas:


Private Sub btnAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregar.Click

Dim temp As DataTable = New DataTable
Dim col As DataColumn = temp.Columns.Add("CLAVE", Type.GetType("System.String"))
Dim i As Integer = 0

col.AllowDBNull = False
col.Unique = False

For i = 0 To dgProductos.Items.Count - 1
If CType(dgProductos.Items(i).Cells(0).Controls.Item( 1), CheckBox).Checked Then
Try
Dim fila As DataRow = temp.NewRow
fila(0) = dgProductos.Items(i).Cells(2).Text
temp.Rows.Add(fila)
Catch IOExcep As System.IO.IOException
End Try
End If
Next
dgCompra.DataSource = temp
dgCompra.DataBind()

end sub

un para Jose_minglein2, que me ayudo mucho con la realizacion del codigo. Muchas gracias que estes bien
Saludos!!!

Ahora que ya le voy agarrando por aqui voy andar muchas gracias a todo el foro.
  #21 (permalink)  
Antiguo 24/04/2005, 23:11
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Yeeeeeeeee, me alegro de que ya lo tengas resuelto, espero que la próxima vez tardemos menos,jeje. Un saludo.
  #22 (permalink)  
Antiguo 06/05/2005, 01:12
 
Fecha de Ingreso: mayo-2005
Mensajes: 5
Antigüedad: 19 años
Puntos: 0
No me funciona el codigo :(

Hola necesito ayuda he estado buscando como pasar los datos de un DataGrid a otro y encontre la solucion aqui propuesta, lo que me pasa es que me da errores por todos lados aver si me podeis echar una manita que estoy tela de agobiada

Os paso el código ave si sabeis que pasa:



Private Sub cmdSiguiente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles cmdSiguiente.Click

**** AQUI ME DA ERROR EN Handles ERROR DE COMPILACION SE ESPERABA:FIN DE LA INSTRUCCION ******

Dim temp As DataTable
Dim col As DataColumn
Dim i As Integer
i = 0
temp = New DataTable

**** AQUI ME FALLA EN Type.GetType SE ESPRABA: EXPRESION ****

col = temp.Columns.Add("CLAVE",Type.GetType("System.String"))
col.AllowDBNull = False
col.Unique = False

For i = 0 To Datagrig1.Items.Count - 1
If CType(DataGrid1.Items(i).Cells(0).Controls.Item(1) , CheckBox).Checked Then
Try
Dim fila As DataRow
fila = temp.NewRow
fila(0) = DataGrid1.Items(i).Cells(2).Text
temp.Rows.Add (fila)

*** AQUI EN As: SE ESPERABA: FIN DE LA INSTRUCCION ***

Catch IOExcep As System.IO.IOException

****AQUI EN try: SE ESPERABA If o Select o SubFunction o Property o Type o With o Enum o fin de la instruccion ****

End Try
End If
Next
DataGrid2.DataSource = temp

***Y AQUI EN DataGrid2.DataBind() SE ESPERABA :=
DataGrid2.DataBind()

End Sub
  #23 (permalink)  
Antiguo 06/05/2005, 01:29
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
una pregunda, estás trabajando en C#???? Esto es codigo VB y por lo que parece a primera vista es que los errores de complicación te los da por que sea otro lenguaje

Si es así puedes cambiar el cod aquí:

http://www.developerfusion.com/utili...sharptovb.aspx

Si no es eso, dimelo y lo miramos con más detenimiento
  #24 (permalink)  
Antiguo 06/05/2005, 01:38
 
Fecha de Ingreso: mayo-2005
Mensajes: 5
Antigüedad: 19 años
Puntos: 0
Claro que estoy trabajando en VB
  #25 (permalink)  
Antiguo 06/05/2005, 01:47
 
Fecha de Ingreso: mayo-2005
Mensajes: 5
Antigüedad: 19 años
Puntos: 0
Puede ser problemas por las referencias???

Yo tengo puesto:

-VB for Applications
-vb runtime objects and procedures
-vb objects and procedures
- OLE automatic
- Microsoft ActiveX data object 2.6 library
- Microsoft Data Binding Collection

Me falta alguno más?
  #26 (permalink)  
Antiguo 06/05/2005, 02:06
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
En un principio el codigo no tiene errores, y referencias no hace falta ninguna referncia especial, programas con WebMatrix???
  #27 (permalink)  
Antiguo 06/05/2005, 02:13
 
Fecha de Ingreso: mayo-2005
Mensajes: 5
Antigüedad: 19 años
Puntos: 0
No que desesperacion
  #28 (permalink)  
Antiguo 06/05/2005, 02:41
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Sinceramente, si estás trabajando con VB.Net, programando con VS.NET, tienes agregadas las referencias base System y System.Net, no tengo ni idea de que puede ser,


Aunque se me acaba de ocurrir conforme escribía que quizá es por la versión del NetFrameWork, pero no creo.
Buf, no sé prueba a crear un nuevo proyecto y pruebas en una página ese cod, nu sep, haber si te puede ayudar alguién más experimentado, de verdad que lo siento.
  #29 (permalink)  
Antiguo 06/05/2005, 07:55
 
Fecha de Ingreso: abril-2005
Ubicación: GUANAJUATO,MEXICO
Mensajes: 216
Antigüedad: 19 años
Puntos: 0
Achury, por que no instalas el msdn de la ayuda de visual, pera que tengas una idea de como ingresar los valores a la nueva columna, de hecho el el ejemplo de ahoshy, lo tomamos de la misma ayuda, pero nos tardamos un buen en andar corrigiendo errores, tambien como dice este Jose_minglein2, es muy posible que te falte una referencia, eso es lo malo de visula que porque tienes que poner todas las referencias y nos las toma por default. te aconsejo mejor que busque el la ayuda porque depende en que este porgramando varia, es ashoshy hizo el program en asp.net y es al go dirente que c#.
  #30 (permalink)  
Antiguo 06/05/2005, 08:03
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Achury:

Unas preguntas:

1.- estas usando VS Net ?

2.- En tu code al parece tienes 2 grids
DataGrid1 y DataGrid2 es correcto ?

3.- Fue error de dedo esto:
For i = 0 To Datagrig1 .Items.Count - 1 'DATAGRIG1 ??

Y aqui lo haces con DATAGRID1
If CType(DataGrid1.Items(i).Cells(0).Controls.Item(1) , CheckBox).Checked Then

4.- Tu variable col en donde la estas ocupando..??

Solo le estas pasando lo que tiene temp, pero despues ya no haces nada con col..

col = temp.Columns.Add("CLAVE", Type.GetType("System.String"))
col.AllowDBNull = False
col.Unique = False

¿?

5.- Porque estas arrojando una Excepcion de tipo IO ?? no estas trabajando con archivos, por tu code veo que esgtas trabajando con tablas y columnas... no le veo sentido hacer ésto:

Catch IOExcep As System.IO.IOException


Checa esos puntos y cualquier cosa por aqui vamos a estar.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 13:59.