我有一个带有TabContainer
控件的页面(来自Ajax控件工具包),并且我根据当前选定的选项卡来切换页面上某些元素的可见性。我一直在OnClientActiveTabChanged
的事件处理程序中进行此操作(工作正常),但发现回发后它会使页面处于错误状态。我尝试将一些代码添加到document.ready
事件处理程序中以获取索引,但是当我执行以下操作时:
$(document).ready(function () {
var index = $('#<%= TabContainer1.ClientID %>').[0].control.get_activeTabIndex();
// Do some stuff with the index
});
...我在
.control
属性上得到了一个空引用异常。有没有办法为TabContainer
挂接客户端“就绪”事件?我不熟悉带有普通DOM元素的事件生命周期(似乎应该有一个常规的onload事件,但我看不到)。如果没有容易处理的事件,则似乎可以使用UpdateMode = Conditional添加
UpdatePanel
和AsyncPostBackTrigger来指向一个隐藏按钮,该按钮带有一个onclick事件处理程序,该事件处理程序将获取 Activity 标签索引-对于我希望DOM已经公开的某些东西,这似乎是很多动人的事情。 最佳答案
太晚了,无法提供帮助,但是我遇到了同样的问题,并且找到了解决方法。
更改您的代码
$(document).ready(function () {
var index = $('#<%= TabContainer1.ClientID %>').[0].control.get_activeTabIndex();
// Do some stuff with the index
});
至
function pageLoad() {
var index = $('#<%= TabContainer1.ClientID %>').[0].control.get_activeTabIndex();
// Do some stuff with the index
};
此处说明:
http://encosia.com/document-ready-and-pageload-are-not-the-same/
基本上,jQuery的ready事件“有点早”,并且TabContainer尚未初始化,而客户端ASP.Net的pageLoad足够晚,并且TabContainer到那时已初始化。