UpdatePanel带有转发器和可编辑字段

时间:2011-02-01 17:51:23

标签: asp.net updatepanel viewstate repeater

我有一个带有转发器和一些字段的更新面板。当用户填写字段的详细信息时,它会填充我保存在Viewstate中的集合,然后绑定到转发器。

因此,updatepanel更新,转发器现在包含用户刚刚在表单中填写的值的新项目。

我还有一个编辑按钮作为该转发器的一部分,当点击它时,使用用户最初输入的数据填充表单字段。

我想要做的是让用户能够编辑这些数据并“保存”该项目,但不是将其添加到集合/视图状态,而是编辑用户选择的任何项目并更新集合/ viewstate反映出来。

例如,假设一个包含两个字段的表单:

名称: 年龄:

我输入Bob和46并点击保存。

Repeater现在为Bob 46显示一个条目,旁边有一个“编辑”按钮。用户单击编辑按钮,表单字段将再次填充Bob和46。

用户然后将其更改为Bob Age 47并点击保存。现在而不是那里有两个条目(Bob 46和Bob 47) - bob 46将更新为Bob 47。

希望这很清楚,这有点模糊,但我想我已经解释了它的要点。需要记住的重要一点是,这一切都发生在更新面板中,所以我使用Viewstate来包含填充转发器的集合。

1 个答案:

答案 0 :(得分:0)

您的问题表明对ASP.NET的UpdatePanel如何工作有点困惑。

无论何时进行“部分”回发以更新UpdatePanel,您的页面实际上都会执行,遍历页面生命周期的所有部分,无论它们与UpdatePanel的相关性如何。然后,只需在页面上刷新UpdatePanel。这种行为使页面的外观工作更快,我想它可以节省一些客户端的渲染时间,但实际上,每次刷新UpdatePanel时都会进行完整的回发。

考虑到这一点,如果您打算使用UpdatePanel来保存转发器,则没有理由做任何非常特殊的事情来保存数据。只需使用正常的转发器方法来添加,编辑等。除非我在这里缺少另一个要求,否则没有特别的理由将数据存储在ViewState中,而不是ASP.NET控件已经存在的。您必须确保您希望触发UpdatePanel更新的任何内容都这样做,但您没有表明对此有任何疑惑。