我的页面上有两个不同的更新面板,每个都由不同的按钮触发,这些按钮位于不同的转发器中,updapenels正常工作并避免冲突我设置了 UpdateMode =“条件”,但我无法确定触发的updapanel的 ID 。
在InitializeRequest
和EndRequest
事件中,我需要确定哪个updatepanel
已触发,然后我可以执行此updapanel
上指定的客户端动画。
感谢名单。
答案 0 :(得分:0)
因此,经过所有研究,最佳实践看起来像这样:
使用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
来实现。