viernes, 7 de septiembre de 2007

ASCX dentro de DataGrid

Importante: Antes que todo deberás saber que esto no funciona con GridView, de modo que tendremos que recurrir al DataGrid que es más flexible.

Supongamos que tenemos en un archivo ASPX algo como lo siguiente:


<asp:DataGrid ID="dg1" AutoGenerateColumns="False" runat="server">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
   <asp:Label ID="lldld" Text='<%# DataBinder.Eval(Container.DataItem, "FechaNacimiento")%>' runat="server" /><br />
   <asp:Label ID="Label1" Text='<%# DataBinder.Eval(Container.DataItem, "Sexo")%>' runat="server" />
   <asp:Label ID="Label2" Text='<%# DataBinder.Eval(Container.DataItem, "Apellidos")%>' runat="server" />
   <asp:Label ID="Label3" Text='<%# DataBinder.Eval(Container.DataItem, "ClaveNivel")%>' runat="server" />
   <MisComponentes:Micontrol ID="control1" ValorAsignar='<%# DataBinder.Eval(Container.DataItem, "Nombres")%>' runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>


Tomar en cuenta que "control1" ya fue registrado en el aspx mediante la directiva @Register.

Ahora veamos cómo está conformado el ASCX.


<%@ Control Language="vb" AutoEventWireup="true" %>

<asp:Label ID="lblUsuario" runat="server" />

<script runat="server">

   Public Property ValorAsignar() As String
      Get
         Return lblUsuario.Text
      End Get
      Set(ByVal value As String)
         lblUsuario.Text = value
      End Set
      End Property

</script>


En este caso existe una propiedad llamada "ValorAsignar" que permite colocar y/o obtener el valor del label.

No hay comentarios: