我在TabContainer中有一些控件,TabContainer在UpdatePanel中。我正在尝试使用以下javascript恢复TabContainer内部面板的滚动位置:
var yPanel;
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args) {
yPanel = $get('ScrollPanel').scrollTop;
}
function EndRequestHandler(sender, args) {
$get('ScrollPanel').scrollTop = yPanel;
}
在Chrome中对这些内容设置断点,我看到当TabContainer外部(以及UpdatePanel内部)的控件激活回发时,BeginRequestHandler
和EndRequestHandler
被触发,我看到断点触发时TabContainer中的按钮被按下。但是,TabContainer中的任何其他控件(例如带有AutoPostBack="true"
的复选框)都会触发回发,但BeginRequestHandler
和EndRequestHandler
事件不触发
我还将调试器附加到服务器并且能够确认,当使用TabContainer外部的控件或TabContainer内的按钮时,我得到以下序列的断点:
但是,当在TabContainer中使用其他控件时,我得到以下序列的断点:
TabContainer是否在某个地方处理这些事件?为什么他们没有发生?
答案 0 :(得分:0)
在我创建的小型演示中发现这个之后,我开始研究我的香草演示和我的页面之间的差异。
导致这些事件无法触发的关键区别和实际差异是在TabContainer及其选项卡上使用ClientIDMode="Static"
。不幸的是,我不知道为什么 ClientID是静态的会引起这个问题,但如果有人在将来遇到类似的问题,这就是你想要注意的。只需将ClientIDMode
更改为默认Inherit
或AutoID
,即可再次执行此操作,并导致事件触发。