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

如何在VB.NET中利用ItemDataBound实现Repeater页脚统计总数

修正VB.NET Repeater控件ItemDataBound事件实现页脚统计总数

前端代码修正

先移除ItemTemplate中多余的</a>标签,修正后的前端代码如下:

<asp:Repeater ID="repGender" runat="server">
    <HeaderTemplate>
        <table cellspacing="0" rules="all" border="1">
            <tr>
                <th>Gender</th>
                <th>Total</th>
            </tr>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td>
                <%# Eval("GENDER")%>
            </td>
            <td style="text-align: center">
                <%# Eval("TOTAL")%>
            </td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
        <tr style="font-weight: bold">
            <td>Grand Total</td>
            <td style="text-align: center">
                <asp:Label runat="server" ID="lblTotal"></asp:Label>
            </td>
        </tr>
        </table>
    </FooterTemplate>
</asp:Repeater>

后端代码修正

需要做以下调整:

  1. 在页面类级别声明Total变量,确保统计过程中值不会被重置
  2. 修正DataBinder.Eval的字段参数为"TOTAL",正确获取每行的统计值
  3. 使用VB.NET正确的条件判断语法(用=而非==,并用ElseIf判断页脚项)
  4. 在页脚项中找到lblTotal控件并赋值统计结果

修正后的后端代码:

' 在页面类级别声明统计变量
Private Total As Integer = 0

Protected Sub repGender_ItemDataBound(sender As Object, e As RepeaterItemEventArgs) Handles repGender.ItemDataBound
    If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
        ' 累加每行的TOTAL值
        Total += Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "TOTAL"))
    ElseIf e.Item.ItemType = ListItemType.Footer Then
        ' 找到页脚中的Label并赋值总统计数
        Dim lblTotal As Label = DirectCast(e.Item.FindControl("lblTotal"), Label)
        If lblTotal IsNot Nothing Then
            lblTotal.Text = Total.ToString()
        End If
    End If
End Sub

注意:如果Repeater会被多次绑定(比如分页或重新查询),需要在绑定数据的方法中添加Total = 0,避免统计值累加错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 09:15:47