[英]Get id of triggered updatepanel only
I have two distinct updatepanels on my page and each of them have triggered by different buttons that are placed in different repeaters, updapenels work properly and to avoid from conflict i had setted their UpdateMode="Conditional" but i can't determine the id of updapanel which is triggering . 我有我的页面上有两个不同的UpdatePanel和他们每个人都通过放置在不同中继器不同的按钮触发,妥善updapenels工作和冲突,以避免我已经设置好的自己的UpdateMode =“有条件的”,但我不能确定的ID updapanel正在触发 。
In InitializeRequest
and EndRequest
events, i need to determine which updatepanel
triggered and then i can do some client-side animations specified on this updapanel
. 在
InitializeRequest
和EndRequest
事件中,我需要确定触发了哪个updatepanel
,然后才能执行此updapanel
上指定的一些客户端动画。
Thanx. 谢谢
So after all researches, the best practice looks like that: 因此,经过所有研究,最佳实践如下所示:
Using Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequest)
and Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(InitializeRequest)
使用
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequest)
和Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(InitializeRequest)
i added all my triggers a data attribute like 我添加了所有触发器的数据属性,例如
<asp:LinkButton Text="Detay" data-sid="PickAppToShow" CssClass="btn btn-default btn-sm" ID="lbtSelectApplication" runat="server" /></td>
and at the request handlers look 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 method is like : 辅助方法就像:
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;
}
The trick is starting now, as you had seen above window[posterSid]
gives you the given named js object. 诀窍现在就开始了,就像您在
window[posterSid]
上面看到的那样,它为您提供了给定的命名js对象。 if you check my RequestHandlers
; 如果您检查我的
RequestHandlers
; they are using two methods as consernedObject.Start();
他们使用两种方法作为
consernedObject.Start();
and consernedObject.End();
和
consernedObject.End();
which are predefined in another js file named AjaxObjects. 它们是在另一个名为AjaxObjects的js文件中预定义的。
For example : 例如 :
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));
}
};
This method have solved all my problems but one that i need to take a parameter from serverside, which can be achived by using hiddenField
. 这种方法解决了我所有的问题,但是我需要从服务器端获取一个参数,可以通过使用
hiddenField
来hiddenField
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.