【发布时间】:2014-12-11 13:38:48
【问题描述】:
我有一个购物车页面。 最重要的是产品。 然后是小计、运费、折扣、总计行。
显然这都是动态的。
我在 Page_LoadComplete 事件中调用完全相同的 LoadTable() Sub。
第一次看起来很棒。 但是,如果我编辑数据并回发,那就太疯狂了: 如果我删除一个产品,结果是我的表短了 1 行。 表格的最后一行,不是显示“TOTAL”和总金额,而是显示回发之前的行中的内容(即重复之前的行)。
表格被加载到 asp:panel 中,我的 Sub 的开头以:
pnlCurrentOrder.Controls.Clear()
Dim tblCurrentOrder As Table = New Table()
tblCurrentOrder.Rows.Clear()
我已经给出了总计行和单元格 ID,当我查看源代码时,它们确实有正确的 ID 信息,但单元格中的数据有误。
这对我来说很奇怪,有人知道这是怎么回事吗?
谢谢
【问题讨论】:
-
为什么不使用数据网格或中继器来获得您想要的东西。那么你只需设置 .datasource 属性,也许调用 .databind,它就会在你的数据源中显示任何内容?
-
简短的回答,因为我以前从未使用过它们。但这并不能回答我的问题。在每次加载时重新创建的表不应该保留任何数据,不是吗?
-
不看所有东西真的很难判断。为了做你想做的事,你需要充分了解页面生命周期,以及回发时 ASP.NET 页面中发生的情况。
-
您可以尝试将代码移至 Load 事件。它可能发生的原因是因为服务器端控件在帖子之间保持它们的值是默认值。您也可以尝试为动态生成的表格关闭视图状态。