在後端類別定義 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 多次綁定或嵌套易出錯;違背關注點分離。
<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" : "" %>">
此法職責清晰:後端負責資料標記,前端負責呈現,無狀態變數干擾。