【问题标题】:Repeater Footer Total重复页脚总计
【发布时间】:2013-07-11 22:48:31
【问题描述】:

我有点困惑为什么这不起作用,我可能做错了什么。

我有一个转发器,其金额列中有值,我想在转发器的页脚中显示此列的总计。

问题是 Total 总是显示 0 而不是将行的值相加。

代码隐藏

Protected Sub reCosts_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles reCosts.ItemDataBound

        Dim rowView As System.Data.DataRowView
        rowView = CType(e.Item.DataItem, System.Data.DataRowView)

        Dim CostsTotal As Decimal

        If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then


            Dim lCostAmount As Literal = CType(e.Item.FindControl("lCostAmount"), Literal)
            Dim CostAmount As Decimal = rowView("Amount")
            lCostAmount.Text = CostAmount.ToString("C2")


            CostsTotal += CostAmount


        ElseIf e.Item.ItemType = ListItemType.Footer Then

            Dim lCostsTotal As Literal = CType(e.Item.FindControl("lCostsTotal"), Literal)
            lCostsTotal.Text = CostsTotal.ToString("C2")

        End If

    End Sub

任何帮助将不胜感激。

J.

【问题讨论】:

  • 如果要将CostAmount 添加到另一个Decimal,为什么要将它转换为String
  • 这只是为了格式化为货币。虽然我在添加到我已删除的CostTotal 时将其转换为string,但没有对问题进行排序
  • 你调试了吗?我想它可能会先打到页脚列表项类型,然后再进入其他页面并进行添加。所以你总是会得到零。改为使用会话对象对此进行测试,在数据绑定之后,将 lCostsTotal 设置为会话中的值。

标签: asp.net vb.net repeater


【解决方案1】:

发生的情况是,每次绑定项目时都会声明 CostsTotal 变量,并在绑定页脚时重置为零。

您需要像这样添加一个保存在 ViewState 中的属性:

Public Property [CostsTotal] As String
   Get
       Return CStr(ViewState("CostsTotal"))
   End Get
   Set
       ViewState("CostsTotal") = Value
   End Set
End Property

还要确保删除此行:

Dim CostsTotal As Decimal

【讨论】:

  • 谢谢,不知道这是做什么的,但它确实有效,将对其进行更多研究。
  • 别担心,不错。我会试着解释一下。绑定每一行(数据项或记录)时,会设置和更新新的视图状态属性。然后在绑定页脚时显示此值。
【解决方案2】:

@hutchonoid 是对的。问题是 CostsTotal 在每次绑定项目时都设置为 0。但是,您不应该将其置于视图状态中。如果它处于视图状态,那么CostsTotal += CostsTotal 将在每次回发时出现,因为它被持久化了。

Dim CostsTotal As Decimal 移动到页面顶部,以便在每次回发时从0 开始。

【讨论】:

    猜你喜欢
    • 2010-09-26
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多