首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

ASP.NET Repeater 首行樣式差異化:兩種實現方案

     編輯:程式設計疑難解答

方案一:後端計數器 (傳統 WebForms 風格)

在後端類別定義 int rowIndex = 0;,在 ItemTemplate 內使用內嵌運算式遞增並判斷。

<%-- 後端 .cs --%>
public int RowIndex = 0;

<%-- 前端 .aspx --%>
<asp:Repeater ID="rep_about" runat="server">
    <ItemTemplate>
        <tr class="<%# (RowIndex++ == 0) ? "first-row" : "" %>">
            <td style="text-align:center;" height="33">
                <a href='about.aspx?id=<%# Eval("ID") %>' class="font12_aaaaaa">
                    <%# Eval("Title") %>
                </a>
            </td>
        </tr>
        <tr><td height="6"></td></tr>
    </ItemTemplate>
</asp:Repeater>

缺點:依賴頁面生命週期執行順序,若 Repeater 多次綁定或嵌套易出錯;違背關注點分離。

方案二:前端 CSS 偽類 (推薦、現代、零後端耦合)

<style>
    /* 針對 Repeater 生成的表格首行 tr */
    #rep_about tr:first-child { 
        background-color: #f0f8ff; 
        font-weight: bold; 
    }
    /* 或針對首個 ItemTemplate 產生的第一個 tr (視實際 HTML 結構調整選擇器) */
</style>

若 Repeater 輸出結構為:

<table>
  <tr><td>Item 1</td></tr> <!-- 首行 -->
  <tr><td></td></tr>       <-- 間隔行 -->
  <tr><td>Item 2</td></tr>
  <tr><td></td></tr>
</table>

則用 #rep_about tr:nth-child(1) 或 #rep_about > tbody > tr:first-child 選中第一條資料行。

方案三:資料層標記 (最乾淨)

綁定前在資料源 (List/DataTable) 中為第一條記錄添加標記欄位 IsFirst = true,前端直接判斷:

<tr class="<%# Convert.ToBoolean(Eval("IsFirst")) ? "first-row" : "" %>">

此法職責清晰:後端負責資料標記,前端負責呈現,無狀態變數干擾。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved