Urgente ayuda con datagrid dinamico con textbox
Publicado por Pilar Bojaca (1 intervención) el 22/02/2008 03:16:36
Hola,
Tengo un gran problema y no se como solucionarlo. He creado un datagrid totalmente dinamico, es decir su numero de columnas y de filas, depende de un numero de registros en base de datos, y lo que hay dentro del datagrid son cajas de texto para ser llenadas con numeros.
Lo que hice para esto fue implementar la clase ITEMPLATE, asi:
Public Class DataGridTemplate
Implements ITemplate
Dim templateType As ListItemType
Dim columnName As String
Dim datasett As DataSet
Dim i As Integer
Sub New(ByVal type As ListItemType, ByVal ColName As String, ByVal datasetV As DataSet)
templateType = type
columnName = ColName
datasett = datasetV
End Sub
Sub InstantiateIn(ByVal container As Control) _
Implements ITemplate.InstantiateIn
Dim lc As New Literal()
Select Case templateType
Case ListItemType.Header
lc.Text = "<B>" & columnName & "</B>"
container.Controls.Add(lc)
Case ListItemType.Item
lc.Text = "Item " & columnName
container.Controls.Add(lc)
Case ListItemType.EditItem
Dim tb As New TextBox()
tb.ID = columnName
tb.Style("width") = "40px"
tb.text = "00"
container.Controls.Add(tb)
Case ListItemType.Footer
lc.Text = "<I>Footer</I>"
container.Controls.Add(lc)
End Select
End Sub
End Class
Y lo uso asi:
Dim bc2 As New TemplateColumn()
bc2.HeaderTemplate = New DataGridTemplate(ListItemType.Header, dts.Tables(0).Rows(i).Item(1), dts)
bc2.ItemTemplate = New DataGridTemplate(ListItemType.EditItem, dts.Tables(0).Rows(i).Item(2), dts)
DataGridPlanta.Columns.Add(bc2)
En vez de tb.text = "00", yo necesito que me traiga en tiempo de ejecucion unos valores traidos de base de datos, segun una seleccion que hago.
Si yo lo hiciera de forma fija lo hacia asi:
<asp:TextBox id=txtPrimaria runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Primaria") %>' Width="40px" />
la pregunta es como colocar esa expresion de evaluacion databinder.eval con sus parametros dinamicos dentro de tb.text en esta implementacion ?
Espero haber sido clara en la duda. Muchas gracias por la colaboracion que me puedan prestar ya que he buscado y no he encontrado como se hace, y soy nueva en .NET
MI correo es [email protected]
Tengo un gran problema y no se como solucionarlo. He creado un datagrid totalmente dinamico, es decir su numero de columnas y de filas, depende de un numero de registros en base de datos, y lo que hay dentro del datagrid son cajas de texto para ser llenadas con numeros.
Lo que hice para esto fue implementar la clase ITEMPLATE, asi:
Public Class DataGridTemplate
Implements ITemplate
Dim templateType As ListItemType
Dim columnName As String
Dim datasett As DataSet
Dim i As Integer
Sub New(ByVal type As ListItemType, ByVal ColName As String, ByVal datasetV As DataSet)
templateType = type
columnName = ColName
datasett = datasetV
End Sub
Sub InstantiateIn(ByVal container As Control) _
Implements ITemplate.InstantiateIn
Dim lc As New Literal()
Select Case templateType
Case ListItemType.Header
lc.Text = "<B>" & columnName & "</B>"
container.Controls.Add(lc)
Case ListItemType.Item
lc.Text = "Item " & columnName
container.Controls.Add(lc)
Case ListItemType.EditItem
Dim tb As New TextBox()
tb.ID = columnName
tb.Style("width") = "40px"
tb.text = "00"
container.Controls.Add(tb)
Case ListItemType.Footer
lc.Text = "<I>Footer</I>"
container.Controls.Add(lc)
End Select
End Sub
End Class
Y lo uso asi:
Dim bc2 As New TemplateColumn()
bc2.HeaderTemplate = New DataGridTemplate(ListItemType.Header, dts.Tables(0).Rows(i).Item(1), dts)
bc2.ItemTemplate = New DataGridTemplate(ListItemType.EditItem, dts.Tables(0).Rows(i).Item(2), dts)
DataGridPlanta.Columns.Add(bc2)
En vez de tb.text = "00", yo necesito que me traiga en tiempo de ejecucion unos valores traidos de base de datos, segun una seleccion que hago.
Si yo lo hiciera de forma fija lo hacia asi:
<asp:TextBox id=txtPrimaria runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Primaria") %>' Width="40px" />
la pregunta es como colocar esa expresion de evaluacion databinder.eval con sus parametros dinamicos dentro de tb.text en esta implementacion ?
Espero haber sido clara en la duda. Muchas gracias por la colaboracion que me puedan prestar ya que he buscado y no he encontrado como se hace, y soy nueva en .NET
MI correo es [email protected]
Valora esta pregunta


0