我在这个网站上使用EPiServer.与asp:DataList不同,EPiServer:PAgeList没有AlternatingItemTemplate. 因此,我需要在我的 ItemTemplate中创建一个计数器并增加此计数器,然后使用模数返回多个css样式以追加
因此,我需要在我的< ItemTemplate>中创建一个计数器并增加此计数器,然后使用模数返回多个css样式以追加到文章/页面.
模数“代码” – 来自后面的代码:
return index % 2 == 0 ? "styleA" : "styleB";
但是我无法在< ItemTemplate>中添加一个计数器并增加它.
任何建议非常感谢!
UPDATE
这是我的EPiServer页面列表控制器:
<EPiServer:PageList runat="server" id="pageList" SortDirection="Ascending" Count="4" OnDataBinding="pageList_OnDataBinding"> <HeaderTemplate> <ul id="articleList1"> </HeaderTemplate> <ItemTemplate> <li> <h2><a href="<%# Eval("LinkURL") %>" title="<%# Eval("PageName") %>"><EPiServer:Property id="Property1" PropertyName="PageName" runat="server" /></a></h2> <div class="articleImage"> <%# ArticleImage(Container.CurrentPage)%> </div> <div class="introText"> <%# IntroText(Container.CurrentPage)%> </div> <div class="readMore floatRight"><a href="<%# Eval("LinkURL") %>" title="<%# Eval("PageName") %>">Les mer</a></div> </li> </ItemTemplate> <FooterTemplate> </ul> </FooterTemplate> </EPiServer:PageList>
回答
我决定使用jQuery比使用.NET浏览更简单.
这不是我的首选解决方案,但它确实有效.我使用的代码是这样的:
if (jQuery("#articleList1").length > 0) { jQuery('li:odd').addClass("odd"); }对于转发器,我这样做: –
<itemtemplate> <tr class='<%#(Container.ItemIndex % 2 == 0) ? "odd" : "even" %>'>
编辑项目数据绑定事件保持跟踪行计数器…
private int counter; protected void list_databound(object sender, RepeaterItemEventArgs e) { if ((e.Item.ItemType == ListItemType.Item) || ((e.Item.ItemType == ListItemType.AlternatingItem)) { counter++; //find server control and use counter as modulus } }
在这里编辑你去… OOPS需要是一个HtmlTableRow !!
HtmlTableRow row = e.Item.FindControl("row") as HtmlTableRow; if (row != null) row.Attributes.Add("class", ((counter % 2 == 0) ? "odd": "even") );
你也需要这个
<tr id="row" runat="server" ...