zoukankan      html  css  js  c++  java
  • ASP.NET在绑定时使用条件表达式

         Asp.net2.0不支持在数据绑定时的条件表达式。Asp.net 4.0已经平滑地解决这个问题,不用修改代码。
    下面让我们来看一个简单的ASP.NET数据绑定场景,有这么一个Repeater:

       1:      <asp:Repeater runat="server" ID="itemsList">
       2:          <HeaderTemplate>
       3:              <table border="1" cellspacing="0" cellpadding="5">
       4:          </HeaderTemplate>
       5:          <ItemTemplate>
       6:              <tr>
       7:                  <td align="right">
       8:                      <%# Container.ItemIndex + 1 %>.
       9:                  </td>
      10:                  <td>
      11:                      <%# Eval("Title") %>
      12:                  </td>
      13:              </tr>
      14:          </ItemTemplate>
      15:          <FooterTemplate>
      16:              </table>
      17:          </FooterTemplate>
      18:      </asp:Repeater>


    然后后端的cs:

       1:     protected void Page_Load(object sender, EventArgs e)
       2:          {
       3:              var items = new[] { 
       4:                      new { Id = 1, Title = "Headline 1" },
       5:                      new { Id = 2, Title = "Headline 2" },
       6:                      new { Id = 2, Title = "Headline 3" },
       7:                      new { Id = 2, Title = "Headline 4" },
       8:                      new { Id = 2, Title = "Headline 5" }
       9:                  };
      10:              itemsList.DataSource = items;
      11:              itemsList.DataBind();
      12:          }


    当我们需要判断绑定时数据行,我们需要Create这么一个类似的方法或函数:

       1:          /// <summary>
       2:          /// Iifs the specified condition.
       3:          /// </summary>
       4:          /// <param name="condition">if set to <c>true</c> [condition].</param>
       5:          /// <param name="trueResult">The true result.</param>
       6:          /// <param name="falseResult">The false result.</param>
       7:          /// <returns></returns>
       8:          protected object Iif(bool condition, object trueResult, object falseResult)
       9:          {
      10:               return condition ? trueResult : falseResult;
      11:          } 


    然后在ASPX中使用它:

       1:  <asp:Repeater runat="server" ID="Repeater1">
       2:    <HeaderTemplate>
       3:      <table border="1" cellspacing="0" cellpadding="5">
       4:      </HeaderTemplate>
       5:    <ItemTemplate>
       6:      <tr style='background-color: <%# Iif(Container.ItemIndex % 2==0, "white", "whitesmoke") %>'>
       7:        <td align="right">
       8:          <%# Container.ItemIndex + 1 %>.</td>
       9:        <td>
      10:          <%# Eval("Title") %></td>
      11:      </tr>
      12:    </ItemTemplate>
      13:    <FooterTemplate>
      14:      </table>
      15:    </FooterTemplate>
      16:  </asp:Repeater>


    这是在模仿VB中的IIF函数。到了ASP.NET 4.0中,我们可以直接这么写了:

       1:  <asp:Repeater runat="server" ID="Repeater2">
       2:    <HeaderTemplate>
       3:      <table border="1" cellspacing="0" cellpadding="5">
       4:      </HeaderTemplate>
       5:    <ItemTemplate>
       6:      <tr style='background-color:<%# Container.ItemIndex % 2==0 ? "white" : "whitesmoke" %>'>
       7:        <td align="right">
       8:          <%# Container.ItemIndex + 1 %>.</td>
       9:        <td>
      10:          <%# Eval("Title") %></td>
      11:      </tr>
      12:    </ItemTemplate>
      13:    <FooterTemplate>
      14:      </table>
      15:    </FooterTemplate>
      16:  </asp:Repeater>


    好了,这个演示是基于ASP.NET WebForm 数据绑定时条件表达式的实现。希望这篇POST对您有帮助!

    Author: Petter Liu   http://wintersun.cnblogs.com

  • 相关阅读:
    JavaScript实现HTML导航栏下拉菜单[悬浮显示]
    Paper Pal:一个中英文论文及其代码大数据搜索平台
    小程序定位地图模块全系列开发教学(超详细)
    简单的个人介绍网页主页面【附代码】
    前端分页功能(通用)
    打造完美写作系统:Gitbook+Github Pages+Github Actions
    移动端布局
    三剑客var,let,const
    包含多个段的程序01 零基础入门学习汇编语言29
    更灵活的定位内存地址的方法01 零基础入门学习汇编语言32
  • 原文地址:https://www.cnblogs.com/wintersun/p/1714827.html
Copyright © 2011-2022 走看看