You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在代码后置及内嵌渲染块中获取Repeater的当前ItemIndex值

解决方案

原理说明

Container 仅在数据绑定表达式(<%# %> 块)的上下文中可用,你使用的 <% %> 属于普通代码渲染块,默认没有绑定上下文,因此直接访问会提示未声明。

方案1:Code Render Block 写法(完全符合你的需求)

你可以先通过数据绑定表达式把当前项索引存入页面局部变量,后续的代码渲染块即可直接调用:

<ItemTemplate>
    <%# Dim currentIndex As Integer = Container.ItemIndex %>
    <% If currentIndex = 2 Then %>
    TRUE/此处放置较长的HTML内容/
    <% Else %>
    false/此处放置较长的HTML内容/
    <% End If %>
</ItemTemplate>

如果是C#语法的项目,对应写法如下:

<ItemTemplate>
    <%# int currentIndex = Container.ItemIndex; %>
    <% if (currentIndex == 2) { %>
    TRUE/此处放置较长的HTML内容/
    <% } else { %>
    false/此处放置较长的HTML内容/
    <% } %>
</ItemTemplate>

方案2:后台事件处理(可选,适合逻辑更复杂的场景)

你也可以在Repeater的ItemDataBound事件中处理不同内容的显隐:

前台模板代码

<ItemTemplate>
    <asp:PlaceHolder ID="TrueContent" runat="server">
        TRUE/此处放置较长的HTML内容/
    </asp:PlaceHolder>
    <asp:PlaceHolder ID="FalseContent" runat="server">
        false/此处放置较长的HTML内容/
    </asp:PlaceHolder>
</ItemTemplate>

后台绑定逻辑(VB示例)

Protected Sub Repeater1_ItemDataBound(sender As Object, e As RepeaterItemEventArgs) Handles Repeater1.ItemDataBound
    ' 仅处理数据行,跳过页眉页脚等类型
    If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
        Dim index As Integer = e.Item.ItemIndex
        Dim trueContent = CType(e.Item.FindControl("TrueContent"), PlaceHolder)
        Dim falseContent = CType(e.Item.FindControl("FalseContent"), PlaceHolder)
        trueContent.Visible = (index = 2)
        falseContent.Visible = Not trueContent.Visible
    End If
End Sub

内容的提问来源于stack exchange,提问作者Megrez7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:39:01