<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<%# Eval("ColumnName") %><br />
<%# (Container.ItemIndex + 1) % 5 == 0 ? "<hr />" : "" %>
</ItemTemplate>
</asp:Repeater>
Container.ItemIndex 從 0 開始,每 5 行 (索引 4,9,14...) 輸出 <hr />。
protected void Page_Load(object sender, EventArgs e) {
DataTable dt = GetData();
// 每 5 行插入一行特殊標記
for (int i = 5; i < dt.Rows.Count; i += 6) { // 索引偏移因插入行
DataRow sep = dt.NewRow();
sep["ColumnName"] = "___SEPARATOR___"; // 特殊值
dt.Rows.InsertAt(sep, i);
}
Repeater1.DataSource = dt;
Repeater1.DataBind();
}
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) {
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
DataRowView drv = (DataRowView)e.Item.DataItem;
if (drv["ColumnName"].ToString() == "___SEPARATOR___") {
((Literal)e.Item.FindControl("litSeparator")).Visible = true;
}
}
}
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) {
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
if ((e.Item.ItemIndex + 1) % 5 == 0) {
Literal lit = new Literal();
lit.Text = "<hr />";
e.Item.Controls.Add(lit);
}
}
}
**方案一** 無需後端邏輯,前端模板自包含,維護最簡單。