ASP.NET: DataBinding en-línea y Operadores Ternarios
Octubre 29th, 2008
¿Alguna vez has requerido evaluar una expresión, o alternar entre una fuente de datos y otra para una misma columna al estar cargando un grid en ASP.NET?
Existen dos maneras, uno es en el codebehind, sin embargo por simplicidad y rapidéz es mejor utilizar código en línea dentro del .aspx. Estos son los pasos para usar el DataBinding de esta manera:
- Generas un TemplateColumn en tu Datagrid (Ya sea asp:datagrid, anthem:datagrid, o cualquiera).
- Creas un ItemTemplate adentro
- Generas un objeto, por ejemplo, un Label.
- Insertas el código (Programado en el lenguaje de la página establecido en Language=”" en la parte inicial del archivo aspx).
Un ejemplo de un DataBind directo con un campo de la base de datos:
<asp:TemplateColumn HeaderText=”Encabezado”>
<ItemTemplate>
<asp:Label runat=”server” ID=”Label1″ style=”color:#003366;”>
<%# ( DataBinder.Eval(Container.DataItem, “monto”) %>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
Un ejemplo evaluando una expresión.
Nota: No se permite usar IF por lo que en c# un operador ternario es requerido, y en VB se puede utilizar IIf. El operador ternario funciona de la siguiente manera: (Expresion)? secumple : nosecumple
<asp:TemplateColumn HeaderText=”Encabezado”>
<ItemTemplate>
<asp:Label runat=”server” ID=”Label1″ style=”color:#003366;”>
<%# (DataBinder.Eval(Container.DataItem, “campoEvaluar”).ToString().ToLower() == “false”)? DataBinder.Eval(Container.DataItem, “monto”) : “0.00″ %>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
Esto va a mostrar el campo “monto” si “campoEvaluar” es falso, de otro modo va a mostrar “0.00″ en ese campo en el grid.
Espero que esto les resuelva la duda a cualquier persona que haya tenido (o tenga) problemas con esto.
Categorías: ASP.NET, Lenguajes, Programación




