ayuda con grid

03/03/2006 - 11:30 por juan | Informe spam
Hola me gustaría rellenar un grid con datos que intoduzca en el
textbox, es decir, tengo 2 textbox uno para el nombre y otro para el
código y me gustaría que al darle a un botón aquello q he escrito en
ambos textbox rellenen el grid, despues limpiar y de nuevo así hasta
rellenar el grid

Preguntas similare

Leer las respuestas

#1 eop
03/03/2006 - 14:35 | Informe spam
NOTA: El código no es operativo tal cual, hay que adaptarlo y
revisarlo.

1º asocia el conjunto de campos a una estructura (array) que agrupe
las características de los mismos.

p.ej.

Structure Campos
Public nomCol As String 'nombre de la columna en el grid
Public ColPos As Integer 'posicion de la columna en el grid
Public tipoDato As Integer 'tipo de dato, se asocian enteros a
los tipos de datos
Public tipoCampo As String 'DropDownList, TextBox ...
Public Campo As Object 'objeto control (DropDownList o
TextBox) del campo correspondiente
Public obligatorio As Boolean ' T o F

' esta estructura sirve para relacionar los campos con el grid
Public Sub New(ByVal nomCol As String, _
ByVal ColPos As Integer, _
ByVal tipoDato As Integer, _
ByVal tipoCampo As String, _
ByVal Campo As Object, _
Optional ByVal obligatorio As
Boolean = False)

Me.nomCol = nomCol
Me.ColPos = ColPos
Me.tipoDato = tipoDato
Me.tipoCampo = tipoCampo
Me.Campo = Campo
Me.obligatorio = obligatorio
End Sub
End Structure

Dim arrayCampos(<#_de_columnas/campos>) As Campos

consecuencia el DataGrid.

2º inicializa los campos en la estructura
3º carga el DataGrid en el evento "Click" del botón

p.ej.

' Rutina principal para la carga de datos en el DataGrid, desde la
Estructura de datos
Private Sub CargarDataGrid()
Dim k As Integer
Dim i As Integer
Dim dt As New DataTable
Dim ds As New DataSet
Dim Row As DataRow

'Generamos un dataset con los datos de los campos
generarColumnas(dt)

For i=0 to arrayCampos.Length

Row = dt.NewRow()
rellenarFila(Row)
dt.Rows.Add(Row)

Next
ds.Tables.Add(dt)

' Se carga el grid con los datos
dgCarpetas.DataSource = ds
dgCarpetas.DataBind()

End Sub

Sub generarColumnas(ByRef dt As DataTable)
Dim Col As DataColumn
Dim bc As BoundColumn
Dim añadirColumnasAlDataGrid As Boolean = True

If dgCarpetas.Columns.Count <>
NUMERO_DE_COLUMNAS_CREADAS_EN_DISEÑO Then 'ya he creado el datagrid
añadirColumnasAlDataGrid = False
End If

For i As Integer = 1 To arrayCampos.Length - 1


If añadirColumnasAlDataGrid Then
bc = New BoundColumn
bc.DataField = arrayCampos(i).nomCol
bc.HeaderText = arrayCampos(i).nomCol
dgCarpetas.Columns.AddAt(dgCarpetas.Columns.Count -
1, bc)
End If

Col = New DataColumn
Col.ColumnName = arrayCampos(i).nomCol
dt.Columns.Add(Col)

Next
End Sub

' Completa las lineas del DG
Sub rellenarFila(ByRef row)
Dim valor
Dim col As Integer

For i As Integer = 1 To arrayCampos.Length - 1
col = arrayCampos(i).ColPos

valor = arrayCampos(i).Campo.Text 'para el caso de TextBox

If arrayCampos(i).tipoDato = 3 Then 'fecha
row(col - 1) = Format(valor, "dd-MM-yyyy")
Else
row(col - 1) = valor
End If
Next
End Sub
Respuesta Responder a este mensaje
#2 eop
03/03/2006 - 14:35 | Informe spam
NOTA: El código no es operativo tal cual, hay que adaptarlo y
revisarlo.

1º asocia el conjunto de campos a una estructura (array) que agrupe
las características de los mismos.

p.ej.

Structure Campos
Public nomCol As String 'nombre de la columna en el grid
Public ColPos As Integer 'posicion de la columna en el grid
Public tipoDato As Integer 'tipo de dato, se asocian enteros a
los tipos de datos
Public tipoCampo As String 'DropDownList, TextBox ...
Public Campo As Object 'objeto control (DropDownList o
TextBox) del campo correspondiente
Public obligatorio As Boolean ' T o F

' esta estructura sirve para relacionar los campos con el grid
Public Sub New(ByVal nomCol As String, _
ByVal ColPos As Integer, _
ByVal tipoDato As Integer, _
ByVal tipoCampo As String, _
ByVal Campo As Object, _
Optional ByVal obligatorio As
Boolean = False)

Me.nomCol = nomCol
Me.ColPos = ColPos
Me.tipoDato = tipoDato
Me.tipoCampo = tipoCampo
Me.Campo = Campo
Me.obligatorio = obligatorio
End Sub
End Structure

Dim arrayCampos(<#_de_columnas/campos>) As Campos

consecuencia el DataGrid.

2º inicializa los campos en la estructura
3º carga el DataGrid en el evento "Click" del botón

p.ej.

' Rutina principal para la carga de datos en el DataGrid, desde la
Estructura de datos
Private Sub CargarDataGrid()
Dim k As Integer
Dim i As Integer
Dim dt As New DataTable
Dim ds As New DataSet
Dim Row As DataRow

'Generamos un dataset con los datos de los campos
generarColumnas(dt)

For i=0 to arrayCampos.Length

Row = dt.NewRow()
rellenarFila(Row)
dt.Rows.Add(Row)

Next
ds.Tables.Add(dt)

' Se carga el grid con los datos
dgCarpetas.DataSource = ds
dgCarpetas.DataBind()

End Sub

Sub generarColumnas(ByRef dt As DataTable)
Dim Col As DataColumn
Dim bc As BoundColumn
Dim añadirColumnasAlDataGrid As Boolean = True

If dgCarpetas.Columns.Count <>
NUMERO_DE_COLUMNAS_CREADAS_EN_DISEÑO Then 'ya he creado el datagrid
añadirColumnasAlDataGrid = False
End If

For i As Integer = 1 To arrayCampos.Length - 1


If añadirColumnasAlDataGrid Then
bc = New BoundColumn
bc.DataField = arrayCampos(i).nomCol
bc.HeaderText = arrayCampos(i).nomCol
dgCarpetas.Columns.AddAt(dgCarpetas.Columns.Count -
1, bc)
End If

Col = New DataColumn
Col.ColumnName = arrayCampos(i).nomCol
dt.Columns.Add(Col)

Next
End Sub

' Completa las lineas del DG
Sub rellenarFila(ByRef row)
Dim valor
Dim col As Integer

For i As Integer = 1 To arrayCampos.Length - 1
col = arrayCampos(i).ColPos

valor = arrayCampos(i).Campo.Text 'para el caso de TextBox

If arrayCampos(i).tipoDato = 3 Then 'fecha
row(col - 1) = Format(valor, "dd-MM-yyyy")
Else
row(col - 1) = valor
End If
Next
End Sub
Respuesta Responder a este mensaje
#3 eop
07/03/2006 - 17:23 | Informe spam
Si, un poco ladrillo si que parece y es porque me gusta programar
dividiendo al máximo el código en funciones y rutinas... por si me da
por reutilizarlo y hacerlo crecer...
Disculpad si es un "poco demasiado" pero os aseguro que yo lo utilizo
muy a menudo y funciona fenomenalmente... bueno, si no, no me habría
atrevido a publicarlo.

Gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida