【发布时间】:2015-05-22 16:35:37
【问题描述】:
谁能告诉我如何在中继器中进行计数?我已经使这段代码有效,但变量(RC)似乎没有计数。代码如下:
<asp:Repeater ID="FPRepeater" runat="server" DataSourceID="FPDataSource">
<ItemTemplate>
<%Dim RC As Int32
Dim divc As String%>
<%If (RC + 1 Mod 1 = 0) Then
divc = "one-third mobile-collapse"
ElseIf (RC + 1 Mod 2 = 0) Then
divc = "one-third one-third-second mobile-collapse"
ElseIf (RC + 1 Mod 3 = 0) Then
divc = "one-third one-third-last mobile-collapse"
End If%>
<div class="<%=divc %>">
<img src="/images/<%# Eval("ImName")%>" alt="<%# Eval("Heading")%>" />
<h2><%# Eval("Heading")%></h2>
<p><%# System.Web.HttpUtility.HtmlDecode(Eval("ContText"))%></p>
</div>
<%RC = (RC + 1)%>
</ItemTemplate>
</asp:Repeater><!--/info-box-->
<asp:SqlDataSource ID="FPDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:Conn %>" SelectCommand="SELECT * FROM [tblContent] WHERE (Location = 'Home') AND (Deleted = 'False') Order By OrderBy ASC">
我认为会发生的是 会在每次重复行时自动将 1 添加到 RC。
它目前所做的只是拉回 1、1、1 而不是 1、2、3。我哪里出错了?谢谢
【问题讨论】:
-
我建议您处理OnItemDataBound 事件并从那里进行任何更改。在每一行上调用此事件,您可以通过查看RepeaterItemEventArgs 来获取行号。此外,您可以尝试在行外声明 RC,这样做的方式确保它始终为 0
-
谢谢...我尝试在行外声明 RC,但每次都失败。你有我可以看的例子吗?我看过 OnItemDataBound 但这个例子有点混乱。我认为我需要做更多的谷歌搜索。
-
你试过用 Container.DataItemIndex 代替 RC 吗?