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_r("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_r("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_r("Title") %></td> 
 11:  </tr> 
 12:  </ItemTemplate> 
 13:  <FooterTemplate> 
 14:  </table> 
 15:  </FooterTemplate> 
 16: </asp:Repeater> 

http://blog.sina.com.cn/s/blog_3e29b20b0100il16.html

發佈了10 篇原創文章 · 獲贊 3 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章