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

  • 相关阅读:
    单词统计
    学习进度_第十周
    学习进度_第九周
    典型用户、场景分析
    一维数组4.25
    《构建之法》阅读笔记03
    学习进度_第八周
    《构建之法》阅读笔记02
    夏壹队——nabcd
    个人作业阶段二 4
  • 原文地址:https://www.cnblogs.com/wintersun/p/1714827.html
Copyright © 2011-2022 走看看