被触发的UpdatePanel的ID只
问题描述:
我有我的两个页面上不同的UpdatePanel和他们每个人都由被放置在不同的中继不同的按钮触发,updapenels正常工作,从冲突避免我已经设置好的他们UpdateMode =“Conditional”但我无法确定触发的updapanel的id为。被触发的UpdatePanel的ID只
在InitializeRequest
和EndRequest
事件,我需要确定哪些updatepanel
触发,然后我可以做这个updapanel
指定一些客户端的动画。
Thanx。
答
因此,所有的研究后,最好的做法看起来像这样:
使用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>
,并在请求处理的数据属性看like that
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);
}
};
helper方法是这样的:
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
来achived之一。