我的页面上有两个不同的更新面板,每个更新面板都由放置在不同中继器中的不同按钮触发,更新面板正常工作并避免冲突,我设置了它们的UpdateMode ="Conditional"但我无法确定正在触发的 updapanel。
在事件中InitializeRequest
,EndRequest
我需要确定是哪个updatepanel
触发的,然后我可以做一些在此指定的客户端动画updapanel
。
谢谢。
我的页面上有两个不同的更新面板,每个更新面板都由放置在不同中继器中的不同按钮触发,更新面板正常工作并避免冲突,我设置了它们的UpdateMode ="Conditional"但我无法确定正在触发的 updapanel。
在事件中InitializeRequest
,EndRequest
我需要确定是哪个updatepanel
触发的,然后我可以做一些在此指定的客户端动画updapanel
。
谢谢。
因此,经过所有研究,最佳实践如下所示:
使用Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequest)
和Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(InitializeRequest)
我添加了我所有的触发器一个数据属性,比如
<asp:LinkButton Text="Detay" data-sid="PickAppToShow" CssClass="btn btn-default btn-sm" ID="lbtSelectApplication" runat="server" /></td>
在请求处理程序看起来像这样
function InitializeRequest(sender, args) {
try {
var consernedObject = getAjaxObjectFromSender(sender);
consernedObject.Start();
}
catch (e) {
fn_ErrorLog(e);
}
};
function EndRequest(sender, args) {
try {
var consernedObject = getAjaxObjectFromSender(sender);
consernedObject.End();
}
catch (e) {
fn_ErrorLog(e);
}
};
辅助方法是这样的:
function getAjaxObjectFromSender(sender) {
var poster = sender._activeElement;
if (poster == null) {
return DefaultObject;
}
var posterSid = poster.getAttribute('data-sid');
if (posterSid == null) {
return DefaultObject;
}
var consernedObject = window[posterSid];
if (consernedObject == null) {
return DefaultObject;
}
return consernedObject;
}
诀窍现在开始,正如您在上面看到的那样,为您window[posterSid]
提供了给定的命名 js 对象。如果你检查我的RequestHandlers
;他们使用两种方法 consernedObject.Start();
,consernedObject.End();
它们在另一个名为 AjaxObjects 的 js 文件中预定义。
例如 :
var DefaultObject = {
Start: function () {
//When Progress Start
App.blockElement($(window), "Pleae wait");
},
End: function () {
//When Progress End
App.unblockElement($(window));
}
};
var PickAppToShow = {
Start: function () {
//When Progress Start
App.blockElement($("#app-detail-content"), "Asking To Server");
},
End: function () {
//When Progress End
App.unblockElement($("#app-detail-content"));
}
};
var PickMemberToDetail = {
Start: function () {
//When Progress Start
App.blockElement($(window), "Wait For It");
},
End: function () {
//When Progress End
$("#modal-MembershipDetail").modal("show");
App.unblockElement($(window));
}
};
这种方法已经解决了我所有的问题,但是我需要从服务器端获取一个参数,这可以通过使用hiddenField
.