Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASPX (.net) (http://www.forosdelweb.com/f78/)
-   -   Copiar en array datos de un datagrid (http://www.forosdelweb.com/f78/copiar-array-datos-datagrid-340483/)

Bravenap 10/10/2005 05:28

Copiar en array datos de un datagrid
 
Hola, muy buenas. Me gustaría obtener todos los datos que tengo cargados en un datagrid y pasarlos a una array, por ejemplo. Podría hacerlo copiándo fila a fila, pero ¿existe la posibilidad de copiarlos todos a la vez? He intentado con el siguiente método del datagrid:

Dim arrAltas As Array
Me.dgAltas.Items.CopyTo(arrAltas, 0)

pero me sale el error "Object reference not set to an instance of an object", aunque no sé si se refiere al vector o a la colección del datagrid.

Gracias y un saludo.

Bravenap 11/10/2005 04:44

Quizás sea mejor replantear la pregunta.

Los datos del datagrid quiero insertarlos en una base de datos. La base de datos tiene los mismos campos que el Datagrid excepto un campo. Este campo es el resultado de cifrar con sha1 el campo DNI del datagrid. Es decir, el datagrid tiene los campos siguientes:

|Num|Nombre|Apellido1|Apellido2|DNI|

y la base de datos:

|Num|Nombre|Apellido1|Apellido2|DNI|Pass

Creo que la mejor opción sería recoger todos los datos del datagrid en un dataset y luego actualizar la base de datos con ese dataset ¿no? Veo una pega en el cifrado del campo.

xknown 11/10/2005 11:13

Ten en cuenta que el DataGrid es más un visor que un _contenedor_ de datos, me queda claro lo que quieres hacer, pero no el proceso que haces para conseguir tu objetivo, creo que estás un poco confundido...

Saludos

Bravenap 13/10/2005 05:20

Je je, sí, la verdad es que sí que me lío bastante en cuanto aparecen en escena vectores, matrices y colecciones. Bueno, el proceso que he seguido al final es insertar paso por paso cada fila del datagrid:

Código:

        Dim conSQL As New SqlConnection(ConfigurationSettings.AppSettings("strConSQL"))
        conSQL.Open()

        'ALTAS ##########################
        If Me.dgAltas.Items.Count > 0 Then
            Dim insCom As New SqlCommand
            insCom.CommandType = CommandType.Text
            insCom.Connection = conSQL
            Dim strIns As String

            For i As Integer = 0 To Me.dgAltas.Items.Count - 1
                strIns = "INSERT INTO acceso_socios" & _
                    " (numero,nombre,apellido1,apellido2,dni,pass)" & _
                    " VALUES (" & _
                    Me.dgAltas.Items(i).Cells(0).Text & "," & _
                    "'" & Me.dgAltas.Items(i).Cells(1).Text.Replace("'", "''") & "'," & _
                    "'" & Me.dgAltas.Items(i).Cells(2).Text.Replace("'", "''") & "'," & _
                    "'" & Me.dgAltas.Items(i).Cells(3).Text.Replace("'", "''") & "'," & _
                    "'" & Me.dgAltas.Items(i).Cells(4).Text.Replace("'", "''") & "'," & _
                    "'" & cifraDNI(Me.dgAltas.Items(i).Cells(4).Text) & "')"

                insCom.CommandText = strIns
                Try
                    insCom.ExecuteNonQuery()
                Catch ex As Exception
                    Response.Write("Error en Socio" & Me.dgAltas.Items(i).Cells(0).Text & "<br>")
                End Try
            Next

        End If

Es un poco lento, pero no suele haber más de diez altas a la semana, por lo que no se ralentiza el proceso demasiado.

Gracias y un saludo.

roggerprogrammer 22/04/2008 15:14

Re: Copiar en array datos de un datagrid
 
Cita:

Iniciado por Bravenap (Mensaje 1291844)
Je je, sí, la verdad es que sí que me lío bastante en cuanto aparecen en escena vectores, matrices y colecciones. Bueno, el proceso que he seguido al final es insertar paso por paso cada fila del datagrid:

Código:

        Dim conSQL As New SqlConnection(ConfigurationSettings.AppSettings("strConSQL"))
        conSQL.Open()

        'ALTAS ##########################
        If Me.dgAltas.Items.Count > 0 Then
            Dim insCom As New SqlCommand
            insCom.CommandType = CommandType.Text
            insCom.Connection = conSQL
            Dim strIns As String

            For i As Integer = 0 To Me.dgAltas.Items.Count - 1
                strIns = "INSERT INTO acceso_socios" & _
                    " (numero,nombre,apellido1,apellido2,dni,pass)" & _
                    " VALUES (" & _
                    Me.dgAltas.Items(i).Cells(0).Text & "," & _
                    "'" & Me.dgAltas.Items(i).Cells(1).Text.Replace("'", "''") & "'," & _
                    "'" & Me.dgAltas.Items(i).Cells(2).Text.Replace("'", "''") & "'," & _
                    "'" & Me.dgAltas.Items(i).Cells(3).Text.Replace("'", "''") & "'," & _
                    "'" & Me.dgAltas.Items(i).Cells(4).Text.Replace("'", "''") & "'," & _
                    "'" & cifraDNI(Me.dgAltas.Items(i).Cells(4).Text) & "')"

                insCom.CommandText = strIns
                Try
                    insCom.ExecuteNonQuery()
                Catch ex As Exception
                    Response.Write("Error en Socio" & Me.dgAltas.Items(i).Cells(0).Text & "<br>")
                End Try
            Next

        End If

Es un poco lento, pero no suele haber más de diez altas a la semana, por lo que no se ralentiza el proceso demasiado.

Gracias y un saludo.






Hola como estas muy bueno tu aporte sabes, yo tenia el mismo problema pense que lo habia solucionado asi no se si alguien me pueda ayudar, explico lo que pasa es que quiero guardar los detalles de una factura, entonces yo tengo un datagrid con 'Codigo' 'Producto' 'Descripcion' 'Cantidad' 'Punit' 'Total' pero que pasa este array que mencionas guarda los datos, en campos que son String pero los campos que yo tengo en el datagrid quiero guardarlos en int por ejemplo el codigo del producto la cantidad y el total cosa que no pasa queria saber si alguien sabe como, y disculpen la ignorancia. grax


La zona horaria es GMT -6. Ahora son las 08:00.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.