none
agregar filas a un gridview o datatable RRS feed

  • Pregunta

  •  hola a todos


    quisiera  saber como puedo agregar filas a un grid o como hacer un datatable y agregarle filas.  

    el ejercicio es el siguiente

    yo recibo un cadena de una pagina anterior ejm  "1 , 2 , 3   ...."   y separo los numeros de tal manera que me queda 1   luego 2  y luego 3
    entonces necesito que cada fila obtenga un numero  y mediante este numero quiero buscar el registro en la base de datos quedaria asi

    cod    nombre     apellido      sexo         edad

     1       paola      palacios   femenino    16

     2       ana         lopez      femenino    20

    ......................

    y asi con todos los numeros que tenga en la cadena

    este es el codigo que tengo


     

    If Not Page.IsPostBack Then
    Me.Labelcadena.Text = Session("DtsSolicitudes")
    End If

     

    Dim numeros As String() = Me.Labelcadena.Text.Split(","c)
    For Each numero As String In numeros

    aca obtengo el valor de los numeros

    numero= 1 


    Next




    gracias



    saludos



    jueves, 15 de octubre de 2009 15:46

Respuestas

  • hola

    podrias tomar los numeros que obtienes y armar un DataTable para luego bindear este a GridView

    Private Function CargarTabla() As DataTable
        Dim dt As New DataTable()
        dt.Columns.Add("Id")
        dt.Columns.Add("Nombre")
        dt.Columns.Add("Cargo")
       
        Dim row As DataRow = dt.NewRow()
        row("Id") = 1
        row("Nombre") = "Andres"
        row("Cargo") = "Developer"
        dt.Rows.Add(row)
       
        row = dt.NewRow()
        row("Id") = 2
        row("Nombre") = "Federico"
        row("Cargo") = "PM"
        dt.Rows.Add(row)
       
        row = dt.NewRow()
        row("Id") = 3
        row("Nombre") = "Leonardo"
        row("Cargo") = "Developer"
        dt.Rows.Add(row)
       
           
        Return dt
    End Function


    por ejemplo el codigo anterior crea de forma manual un DataTable, podrias adaptarlo para colocar las columnas que necesites lo cargas con el foreach y luego lo bindeas

    lo que nollegue a entender cuantas columans tendra el gridview, o sea sera solo una? con este numero que paseas, o dejaras otras en blanco para editar ?


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 15 de octubre de 2009 19:30
  • hola,
    lo q entiendo es q te llega una cadena de numeros y tu luego la separas para usarla para obtener de a uno los registros de mla base de datos.... q tal si ocupas la funcion IN y asi obtener todos los registros q te trae esa cadena .. por ej

    select * from banco where cod_banco in ('1','2','3')

    luego para agregar lo q seleccionas al grid seria asi

     

    Public Sub cargadata(ByVal grupo As String)

     

    Dim con As New coneccion  --> esta es una clase q yo ocupo.. debes utilizar tu string de coneccion
    Dim ds As New DataSet()
    Dim sql As String
    con.conectar()

    sql = "select * from banco where cod_banco in ('1','2','3')"

    Dim Da As New SqlDataAdapter(sql , con.stcon) --> el segundo parametro es el string de coneccion
    Da.Fill(Ds)
    If ds.Tables(0).Rows.Count > 0 Then
          dggrupos.DataSource = ds.Tables(0)
          dggrupos.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.ColumnHeader)
          dggrupos.ReadOnly =
    True
    Else
         dggrupos.DataSource = ""
    End If
    con.desconectar()
    End Sub

    espero q te sirva ^^

    jueves, 15 de octubre de 2009 20:19

Todas las respuestas

  • hola

    - me imagino que el control qeu estas usando es el GridView ?

    Para insertar un valor nuevo en la grilla lo que deberias hacer es recuperar el DataSource asignado al control, por ahi por lo que comentas has utilziado un DataTable.

    si puedes recuperar sse datatable, la idea es que le agregues un nuevo registro y vuelvas a realziar el bindeo


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 15 de octubre de 2009 17:27
  • hola leandro


    no uso ningun datatable , lo que sucede es que me traigo una cadena desde otra pagina ejm  1 , 2 , 3  y luego la separo , uso el "for each" para recorrer  la cadena y separar numero por numero ,  quedandome un solo numero  cada vez que la recorro  ejm  1  y luego seria 2 , despues 3  y estos codigos pertenecen a una tabla, lo que necesito es llenar el gridview con los registros que tienen esos codigo

    un ejemplo seria


    Dim numeros As String() = Me.Labelcadena.Text.Split(","c)
    For Each numero As String In
    numeros


    cuando valga 1  ,   selccioneme de la bd el registro con codigo 1 y agreguelo en una fila al gridview , luego el 2  y luego el  3

    quedandome tres resgistros en el gridview

    Next




    agradezco tu respuesta



    saludos
    jueves, 15 de octubre de 2009 19:18
  • hola

    podrias tomar los numeros que obtienes y armar un DataTable para luego bindear este a GridView

    Private Function CargarTabla() As DataTable
        Dim dt As New DataTable()
        dt.Columns.Add("Id")
        dt.Columns.Add("Nombre")
        dt.Columns.Add("Cargo")
       
        Dim row As DataRow = dt.NewRow()
        row("Id") = 1
        row("Nombre") = "Andres"
        row("Cargo") = "Developer"
        dt.Rows.Add(row)
       
        row = dt.NewRow()
        row("Id") = 2
        row("Nombre") = "Federico"
        row("Cargo") = "PM"
        dt.Rows.Add(row)
       
        row = dt.NewRow()
        row("Id") = 3
        row("Nombre") = "Leonardo"
        row("Cargo") = "Developer"
        dt.Rows.Add(row)
       
           
        Return dt
    End Function


    por ejemplo el codigo anterior crea de forma manual un DataTable, podrias adaptarlo para colocar las columnas que necesites lo cargas con el foreach y luego lo bindeas

    lo que nollegue a entender cuantas columans tendra el gridview, o sea sera solo una? con este numero que paseas, o dejaras otras en blanco para editar ?


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 15 de octubre de 2009 19:30
  • hola


    todas las colomnas estan llenas deben venir de la base de datos , como me traeria los campos de la base de datos y como los cargo al grid




    gracias



    saludos
    jueves, 15 de octubre de 2009 19:48
  • hola,
    lo q entiendo es q te llega una cadena de numeros y tu luego la separas para usarla para obtener de a uno los registros de mla base de datos.... q tal si ocupas la funcion IN y asi obtener todos los registros q te trae esa cadena .. por ej

    select * from banco where cod_banco in ('1','2','3')

    luego para agregar lo q seleccionas al grid seria asi

     

    Public Sub cargadata(ByVal grupo As String)

     

    Dim con As New coneccion  --> esta es una clase q yo ocupo.. debes utilizar tu string de coneccion
    Dim ds As New DataSet()
    Dim sql As String
    con.conectar()

    sql = "select * from banco where cod_banco in ('1','2','3')"

    Dim Da As New SqlDataAdapter(sql , con.stcon) --> el segundo parametro es el string de coneccion
    Da.Fill(Ds)
    If ds.Tables(0).Rows.Count > 0 Then
          dggrupos.DataSource = ds.Tables(0)
          dggrupos.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.ColumnHeader)
          dggrupos.ReadOnly =
    True
    Else
         dggrupos.DataSource = ""
    End If
    con.desconectar()
    End Sub

    espero q te sirva ^^

    jueves, 15 de octubre de 2009 20:19
  • hola

    me manda un error de que no se a inicializado la propiedad connectionstring


    Public

     

    Sub cargadata()

     

    Dim cadena As New Claseconexion 'instancia clase que tiene la conexion
    Dim con As New SqlConnection 'define una variable para trabajar con la conexion a la base de datos
    Dim DaControl As New SqlDataAdapter 'define una variable para el data adapter
    Dim Dscontrol As New Data.DataSet 'define un variable para el data set

     

    con.Open()

     

    Dim sql As String
    sql = "select * from tabla where Idcampo in ('32','33','34')"
    Dim Da As New SqlDataAdapter(sql, con)
    Da.Fill(Dscontrol)
    If Dscontrol.Tables(0).Rows.Count > 0 Then
    Me.GridView1.DataSource = Dscontrol.Tables(0)

     

    ' dggrupos.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.ColumnHeader) ' esto marca error como se pondria para un gridview
    'dggrupos.ReadOnly = True ' esto marca error como se pondria para un gridview

     

    Else

     

    Me.GridView1.DataSource = ""
    End If

    con.Close()



    esta es mi clase conexion

    Imports Microsoft.VisualBasic

    Public

     

     

    Class Claseconexion
    Public cadena As String
    Public Sub mtdcadena()
    cadena =
    "Data source=xxxx\xxxx;initial catalog=xxxx;user id=xxxxx;Password=xxxxx;"
    End Sub
    End
    Class


    jueves, 15 de octubre de 2009 22:28
  • hola

    Pero no estas asignando la cadena de conexion a la instancia de SqlConnection


    Dim cadena As New Claseconexion 
    Dim con As New SqlConnection(cadena.cadena) 
    Dim DaControl As New SqlDataAdapter 
    Dim Dscontrol As New Data.DataSet '

    con.Open()


    Ademas te recomendaría que la cadena de conexión no la tengas fija en el código, sino que hagas uso de un archivo de configuración un o sea el web.config
    este tiene una sección especial para alojar las cadenas de conexión:



    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 16 de octubre de 2009 0:34