none
Inconveniente con GRIDVIEW ASPX.NET RRS feed

  • Pregunta

  • Hola buenos días, necesito una ayuda por favor que me digan si se puede o no se puede y de poderse como tratar de hacerlo ya que este tema es nuevo para mi, el inconveniente es el siguiente:

    He insertado un gridview en mi proyecto web, el cual le asigno 4 columnas llamadas:

    columna1-codigo

    columna2-nombre

    columna3-apellido

    columna4-direccion

    Declaro el datatable, Dim dt As New DataTable

    y en el page load

                    agrego columnas al datatable
                    dt.Columns.Add("Codigo")     '1
                    dt.Columns.Add("Nombre") '2
                    dt.Columns.Add("Apellido")     '3
                    dt.Columns.Add("Direccion")   '4
                    Session("tablaSesion") = dt

    El gridview no carga ningún dato de ningún datasource ya que lo que quiero es ir llenado el gridview manualmente mediante un botón de inserción, el cual contiene el siguiente código para poder realizar lo antes mencionado:

        Protected Sub InsertarenGridView_Click(sender As Object, e As EventArgs) Handles InsertarenGridView.Click
            Try
            Dim tabAgre As New DataTable
            tabAgre = Session("tablaSesion")

            Dim filAgre As DataRow = tabAgre.NewRow

            filAgre("Codigo") = TextBox1.Text
            filAgre("Nombre") = TextBox2.Text
            filAgre("Apellido") = TextBox3.Text
            filAgre("Direccion") = TextBox4.Text
            tabAgre.Rows.Add(filAgre)

            Session("tablaSesion") = tabAgre

            Me.GridView1.DataSource = tabAgre
            Me.GridView1.DataBind()

            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End Sub

    Hasta este punto todo funciona perfectamente, sin problema alguno, el problema o inconveniente viene cuando esos datos ya insertados manualmente en el gridview llámese la cantidad N mediante un boton de guardar, el cual contiene el siguiente código:

        Protected Sub GuardarDatosGrid_Click(sender As Object, e As EventArgs) Handles GuardarDatosGrid.Click

            'Recorro el GridView

            For Each row As GridViewRow In GridView2.Rows

                Dim ent As New EntRegistrodeDatosGridView

                ent.Codigo= Convert.ToString(row.Cells(0).Text)
                ent.Nombre = Convert.ToString(row.Cells(1).Text)
                ent.Apellido = Convert.ToString(row.Cells(2).Text)
                ent.Direccion = Convert.ToString(row.Cells(3).Text)

                CapaNegocio.Guardar(ent)
            Next

        End Sub

    Hago un breakpoint en el botón de guardar para ver los datos que lleva y asigna a la variables para la inserción a la base de datos, pero los datos que lleva van vacíos,

    ejemplo: ent.Codigo= Convert.ToString(row.Cells(0).Text) cuando paso el mouse sobre el valor aparece: row.Cells(0).Text = ""

    como que no hubiera ningún dato ya previamente insertado en el gridview.

    Necesito su ayuda por favor, se los agradezco ya que me ayudaría mucho poder lograr esto que quiero realizar.


    • Editado Interfast507 lunes, 26 de septiembre de 2016 19:05
    viernes, 23 de septiembre de 2016 14:28

Respuestas

  • El código antes mencionado y escrito funciona a la perfección, al parecer el problema era en el gridview, porque yo le creaba las columnas en el diseño del grid, lo que hice fue simplemente dejar el grid por defecto y crear las columnas mediante código, dándome resultado, esperado, así que espero les ayude este problemas a otras personas, gracias a todos por su ayuda, gracias Leandro por tu tiempo.

    Adjunto Código del gridview que como pueden ver es simple

    <asp:GridView ID="GridView2" runat="server">
    </asp:GridView>

    Saludos

    ______________________

    • Marcado como respuesta Interfast507 lunes, 26 de septiembre de 2016 19:18
    lunes, 26 de septiembre de 2016 19:14

Todas las respuestas

  • hola

    >>Hago un breakpoint en el botón de guardar para ver los datos que lleva y asigna a la variables para la inserción a la base de datos, pero los datos que lleva van vacíos,

    pero si los datos los mentienes en Session, porque los tomas del grid ?

    Dim tabAgre As New DataTable= DirectCast(Session("tablaSesion"), DataTable)
    
    For Each row As DataRow In tabAgre .Rows
    
        Dim ent As New EntRegistrodeDatosGridView
    
        ent.Codigo= Convert.ToString(row("Codigo"))
        ent.Nombre = Convert.ToString(row("Nombre"))
         'otros campos
    
        NegRegistroSolucionMantenimientoDeta.Guardar(ent)
    
    Next

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 23 de septiembre de 2016 16:32
  • El código antes mencionado y escrito funciona a la perfección, al parecer el problema era en el gridview, porque yo le creaba las columnas en el diseño del grid, lo que hice fue simplemente dejar el grid por defecto y crear las columnas mediante código, dándome resultado, esperado, así que espero les ayude este problemas a otras personas, gracias a todos por su ayuda, gracias Leandro por tu tiempo.

    Adjunto Código del gridview que como pueden ver es simple

    <asp:GridView ID="GridView2" runat="server">
    </asp:GridView>

    Saludos

    ______________________

    • Marcado como respuesta Interfast507 lunes, 26 de septiembre de 2016 19:18
    lunes, 26 de septiembre de 2016 19:14