因介面限制無法用現成選單控件,改用 Repeater 動態渲染。標記:
<asp:Repeater ID="CategoryList" runat="server" OnItemDataBound="CategoryList_ItemDataBound">
<HeaderTemplate><div style="width:90%;..."></HeaderTemplate>
<ItemTemplate>
<div style="line-height:30px;">
<img src="images/jt_red.gif" /><img src="images/jt_red.gif" />
<asp:HyperLink ID="hlRootCategory" CssClass="dh" runat="server">Category</asp:HyperLink>
</div>
</ItemTemplate>
<FooterTemplate></div></FooterTemplate>
</asp:Repeater>
後端 ItemDataBound 中:
protected void CategoryList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var hl = (HyperLink)e.Item.FindControl("hlRootCategory");
var drv = (DataRowView)e.Item.DataItem;
hl.Text = drv["CategoryName"].ToString();
hl.NavigateUrl = "~/Category.aspx?id=" + drv["CategoryID"];
}
}
關鍵:e.Item.FindControl 取得模板內控件,e.Item.DataItem 強轉資料列。