在ASP.net AJAX项目(WebForms)中, 我有一个UpdatePanel,在UpdatePanel中,我有多个带有UpdatePanels的嵌套控件,基本上,我有控件树。父控件非常巨大,并且是站点中非常重要的部分,我无法触摸它(并且它在很多地方都可以重复使用),UpdatePanel应该保持在当前位置。
更新面板中的子控件具有相互隔离的功能(它们也由UpdatePanel分隔),以便仅刷新控件中的一个即可。 基本上在Page_Load()上,我有代码可以用数据完全填充每个子控件,例如,如果我有一个删除功能,可以修改子控件数据。步骤如下:
首先显示控件(ParentControl)。
如果我单击删除:
Page_Load()->填充数据/ 不想在这里调用它! /
事件删除->修改数据
->fullfill data again!
我需要在 AsyncPostbacks 上 实现 编程上的差异,并在仅想执行事件时不使用Page_Load()函数来调用完全填充数据。
在UpdatePanel之外,您可以使用 IsAsyncPostback , IsCallBack , IsPostback, 我肯定知道这一点,但是这些 属性在AsyncPostback上不会更改 。
我有2个AsycPostbacks,我需要对它们进行区分。 1.首先,这只是显示数据并进行初始化。 2.执行事件并对控件进行修改
是否有人知道要实现的技术,或者某种具有这种功能的Framework?
有人有这个问题吗?:(
我已经删除了我的其他答案-看到您现在描述的是与最初的答案完全不同的问题,完全保留我的答案,同时保留先前版本的代表,这似乎很愚蠢。
您将必须检查导致异步回调的事件,或者检查每个更新面板中控件的某些值,以帮助您确定更改了什么。
这是我决定不使用更新面板的关键原因之一,异步回发会导致几乎所有页面生命周期事件发生,并且使得很难真正看到像这样的复杂情况下发生的事情- 只有当我在个人网站上使用愤怒的更新面板时,才在数据网格上环绕以保存处理大量数据时重新加载整个页面的情况。
编辑添加:
只是试图提供帮助,一个快速的Google提出了这个建议(AJAX和ASP.NET 2.0回调框架):
哪个控件发起了请求? 在回发请求中,ScriptManager id作为参数运行。通常,该值是启动部分回发的控件的ID。格式为|。控件可以直接或通过UpdatePanel向ScriptManager注册。ScriptManager.AsyncPostBackSourceElementID属性将返回启动部分回发的控件的ID。 语法示例:
哪个控件发起了请求?
在回发请求中,ScriptManager id作为参数运行。通常,该值是启动部分回发的控件的ID。格式为|。控件可以直接或通过UpdatePanel向ScriptManager注册。ScriptManager.AsyncPostBackSourceElementID属性将返回启动部分回发的控件的ID。
语法示例:
ScriptManager1=UpdatePanel1|Button1
该页面还详细介绍了生命周期以及流程中的各种挂钩。