ASP.Net Web Form + Ajax数据在发回后丢失。可能的原因 ? Ajax或更改可见属性

ASP.Net Web Form + Ajax数据在发回后丢失。可能的原因 ? Ajax或更改可见属性

问题描述:

我有两个Repeater控件,每个控件都驻留在用户控件中。这两个用户控件都包含在相同的aspx页面中。任何时候都只能看到一个用户控件。中继器由复选框和用于用户输入的文本框组成。ASP.Net Web Form + Ajax数据在发回后丢失。可能的原因 ? Ajax或更改可见属性

aspx页面配置有Ajax ScriptManager;并包含多个Ajax UpdatePanel。当文本在aspx页面上的控件中的文本框控件中更改(这不是用户控件中Repeaters的行为)时,这些UpdatePanels会导致部分页面回发。通过使用几个AsyncPostBackTriggers,包含在页面上其他UpdatePanels中的各种控件的内容都会刷新,以响应部分页面回发,并将它们配置为通知它们。

根据单选按钮组的选择,我将visible属性设置为true或false - 适用于包含Repeater控件的User控件。 Repeater控件然后使用数据绑定填充数据。 所有这些作品

但是,当点击提交按钮时,Repeater控件不包含任何数据。 鉴于我不动态地添加包含Repeater控件的控件(但使用可见的真/假)。我可能会认为在可见控制下的田野状态和数据将在后期保留。

用户控件包含在包含Submit Button的UpdatePanel中。 我有显式启用视图状态没有任何影响。 我正确地假设我不应该做任何显式处理用户所做的数据更改(通过客户端脚本和操纵数据结构来表示Repeater数据);并且视图状态应该保存我提交时需要在服务器*问的数据?

我不相信这是用户控制可见状态的更改,导致问题,因为当页面最初加载的用户控件填充虚假行(所以它显示)。

我怀疑是因为控件的可见状态在部分页面回发期间发生了变化,即页面视图状态最终没有用户控件的知识,因此无法跟踪其数据(或更改)。

我已经调查了很多类似的探测帖子,但到目前为止并不觉得我遇到了一个可以帮助我理解和解决问题的可靠解释。

希望有人可以提供帮助。

+0

删除UpdatePanel并再​​次进行检查以找到您的问题。 UpdatePanel在javascript上隐藏错误。找到它后,将UpdatePanel放回。 – Aristos 2010-09-15 20:08:16

+0

嗨感谢您的建议Aristos。我已经删除了所有更新面板。我还删除了用户控件的可见性更改。我现在想知道如果使用Repeater Control,一切都需要手动处理(客户端JavaScript响应用户更改; ppdating保存在ViewState中的数据结构;在ViewState中的数据回发期间重新加载控件)。有什么想法吗? – 2010-09-15 20:35:09

我必须是唯一没有意识到DataBind()方法的更精细点的人;无论它是否被绑定到数据上的特定控制上;或者在页面上。我希望下面的内容能够帮助那些发现自己处于数据绑定似乎莫名其妙失去状态的人。

我的问题是我的页面非常复杂。它有几个用户控件。问题在于,在这些用户控件中,我在Page_Load事件处理程序中调用Page.DataBind(),以重新绑定PostBack上的页面数据。这导致位于另一个用户控件上的Repeater控件失去其数据绑定。

从Page_Load事件处理程序方法的每个用户控件中删除Page.DataBind方法调用可解决此问题。它与更新面板/刷新等无关。