Hace algun tiempo tuve oportunidad de dar unos cursos a becarios en Softtek. Como parte de uno de los ejercicios que hicimos, les puse a crear un «generador dinámico de catálogos» básicamente para que entendieramos bien el modelo de ADO.NET y conocer la facilidad con la que se pueden desarrollar aplicaciones de escritorio.
La premisa es: creamos una forma que acepte como parámetro un nombre de una tabla [public property TableName] y la forma, cada que se cargue leerá los campos de la tabla y los desplegará dentro de la forma, como si fuera una forma de captura.
Aquí les dejo el código fuente completo al ejercicio para que puedan ver como se implementa, obviamente le falta mucho a ser algo funcional pero podría servirles de base…
http://intellekt.ws/users/blogs/weblogstuff/dynamiccatalogs.zip
Ah… y está hecho en VB.NET [para 2003].
Cheers!
1 | Public Sub CreateControls() |
2 | Dim sql As String = «select * from » & _tableName |
3 | Dim da As New SqlClient.SqlDataAdapter(sql, _connectionString) |
4 | Dim ds As New DataSet(_tableName) |
5 | Dim dt As DataTable |
6 | Dim cm As DataColumn |
7 | Dim _top As Integer = 20 |
8 | |
9 | da.Fill(ds) |
10 | dt = ds.Tables(0) |
11 | |
12 | For Each cm In dt.Columns |
13 | Dim tx As New TextBox |
14 | tx.Left = 100 |
15 | tx.Top = _top |
16 | tx.Name = «txt» & cm.ColumnName |
17 | tx.Parent = Me |
18 | tx.Text = «» |
19 | AddHandler tx.Validating, AddressOf txtValidating |
20 | Me.Controls.Add(tx) |
21 | |
22 | Dim la As New Label |
23 | la.Left = 10 |
24 | la.AutoSize = True |
25 | la.Top = _top |
26 | la.Name = «lbl» & cm.ColumnName |
27 | la.Parent = Me |
28 | la.Text = cm.ColumnName |
29 | Me.Controls.Add(la) |
30 | |
31 | _top += (tx.Height + 10) |
32 | Next |
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.