ASP.NET: DataBinding en-línea y Operadores Ternarios

Octubre 29th, 2008

No Gravatar

¿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

Etiquetas: , , , , , , , , , , , , Dejar un comentario

Dejar un comentario

Feed

http://mtycoders.com / ASP.NET: DataBinding en-línea y Operadores Ternarios