0

在 ASP.net AJAX 项目(WebForms)中,我有一个 UpdatePanel,在 UpdatePanel 中我有多个带有 UpdatePanel 的嵌套控件,基本上我有控件树。

家长控制是网站的巨大且非常重要的部分。我不能碰它,(而且它在很多地方被重复使用),UpdatePanel 应该保持在它的当前位置。

更新面板中的子控件具有彼此分开的功能(它们也与 UpdatePanel 分开),以便能够仅刷新控件的一部分。

基本上在 Page_Load() 上,我的代码可以为每个子控件提供数据,例如,如果我有一个修改子控件数据的删除功能。步骤是这样的:

首先显示控件(ParentControl)。

  • Page_Load() -> 填充数据

如果我点击删除:

  • Page_Load() -> fullfill data /* 不想在这里调用它!*/

  • 事件删除->修改数据

           ->fullfill data again!
    

我需要在AsyncPostbacks上进行编程差异,并在您只想执行事件时使用 Page_Load() 函数来不调用完成数据。

在 UpdatePanel 之外,您可以使用IsAsyncPostbackIsCallBackIsPostback我肯定知道这一点,但这些属性在 AsyncPostback 上不会改变

我有 2 个 AsycPostbacks,我需要区分它们。:

  1. 首先这只是显示数据和初始化。
  2. 执行事件并对控件进行修改

有人知道一种实现技术,或者某种具有这种功能的框架吗?

有人有这个问题吗?

4

1 回答 1

1

我已经删除了我的另一个答案 - 看到你现在描述的问题与最初的问题完全不同,完全替换我的答案似乎很愚蠢,同时保留以前版本的代表。

您将不得不检查导致异步回调的事件,或者检查每个更新面板中控件的某些值,以帮助您找出更改的内容。

这是我决定不使用更新面板的关键原因之一,异步回发导致几乎所有页面生命周期事件发生,并且很难真正看到在这样的复杂情况下发生了什么 -唯一一次我愤怒地使用更新面板是在我的个人网站上环绕数据网格以在处理大量数据时保存整个页面的重新加载。


编辑添加:

只是想帮忙,一个快速的谷歌出现了这个(AJAX 和 ASP.NET 2.0 回调框架)

哪个控件发起了请求?

在回发请求中,ScriptManager id 作为参数进行操作。通常,该值是启动部分回发的控件的 id。它的格式为 |。控件可以直接或通过 UpdatePanel 向 ScriptManager 注册。ScriptManager.AsyncPostBackSourceElementID 属性将返回启动部分回发的控件的 ID。

示例语法:

ScriptManager1=UpdatePanel1|Button1

该页面还详细介绍了生命周期以及流程中的各种挂钩。

于 2009-09-15T19:35:56.777 回答