Agregar TemplateField dinamicamente
Publicado por Oswaldo (9 intervenciones) el 23/10/2008 20:01:15
Hola a todos,
Cuando uqiero agregar una columna desde el programación de VB .Net a un grid y ligarla a un dataset utilizo el siguiente códico:
Dim bfNombre As BoundField = New BoundField
bfNombre.DataField = "Campo"
bfNombre.HeaderText = "Encabezado"
gvListaAsistencia.Columns.Add(bfNombre)
En el mismo grid necesito agregar un TemplateField el cual consta de un checkbox en el encabezado y otro en el cuerpo del grid, si lo hago desde el diseño no tengo problemas para hacerlo, y lo tengo con el siguiente código ASP .Net
<Columns>
<asp:TemplateField HeaderStyle-BorderWidth="3">
<HeaderTemplate>
<asp:CheckBox id="chkTodos" runat="server" AutoPostBack="true" OnCheckedChanged="chkTodos_CheckedChanged" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkSeleccion" runat="server" Checked ='<%# Bind("Activo") %>' AutoPostBack="true" OnCheckedChanged ="chkSeleccion_CheckedChanged" />
<asp:Label ID="lblUsuario" runat="server" Text='<%# Bind("Nombre") %>' Visible="false"></asp:Label>
</ItemTemplate>
<Columns>
pero para realizar algunas operaciones extra durante la ejecución necesito crear la columna y agregarla en tiempo de ejecución con un código parecido al de "Dim bfNombre As BoundField = New BoundField"
Lo he intentado con el siguiente código pero me marca el error "No se puede convertir un objeto de tipo 'System.Web.UI.WebControls.CheckBox' al tipo 'System.Web.UI.ITemplate'.":
Dim chkTodos As CheckBox = New CheckBox
chkTodos.AutoPostBack = True
Dim chkSeleccion As CheckBox = New CheckBox
chkSeleccion.AutoPostBack = True
Dim tmpField As TemplateField = New TemplateField
tmpField.HeaderTemplate = chkTodos
tmpField.ItemTemplate = chkSeleccion
gvListaAsistencia.Columns.Add(tmpField)
Muchas gracias!
Cuando uqiero agregar una columna desde el programación de VB .Net a un grid y ligarla a un dataset utilizo el siguiente códico:
Dim bfNombre As BoundField = New BoundField
bfNombre.DataField = "Campo"
bfNombre.HeaderText = "Encabezado"
gvListaAsistencia.Columns.Add(bfNombre)
En el mismo grid necesito agregar un TemplateField el cual consta de un checkbox en el encabezado y otro en el cuerpo del grid, si lo hago desde el diseño no tengo problemas para hacerlo, y lo tengo con el siguiente código ASP .Net
<Columns>
<asp:TemplateField HeaderStyle-BorderWidth="3">
<HeaderTemplate>
<asp:CheckBox id="chkTodos" runat="server" AutoPostBack="true" OnCheckedChanged="chkTodos_CheckedChanged" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox id="chkSeleccion" runat="server" Checked ='<%# Bind("Activo") %>' AutoPostBack="true" OnCheckedChanged ="chkSeleccion_CheckedChanged" />
<asp:Label ID="lblUsuario" runat="server" Text='<%# Bind("Nombre") %>' Visible="false"></asp:Label>
</ItemTemplate>
<Columns>
pero para realizar algunas operaciones extra durante la ejecución necesito crear la columna y agregarla en tiempo de ejecución con un código parecido al de "Dim bfNombre As BoundField = New BoundField"
Lo he intentado con el siguiente código pero me marca el error "No se puede convertir un objeto de tipo 'System.Web.UI.WebControls.CheckBox' al tipo 'System.Web.UI.ITemplate'.":
Dim chkTodos As CheckBox = New CheckBox
chkTodos.AutoPostBack = True
Dim chkSeleccion As CheckBox = New CheckBox
chkSeleccion.AutoPostBack = True
Dim tmpField As TemplateField = New TemplateField
tmpField.HeaderTemplate = chkTodos
tmpField.ItemTemplate = chkSeleccion
gvListaAsistencia.Columns.Add(tmpField)
Muchas gracias!
Valora esta pregunta


0