我有一个带有TabContainer
控件的页面(来自Ajax Control Toolkit),我根据当前选择的选项卡切换页面上某些元素的可见性。我一直在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和AsyncPostBackTrigger添加UpdatePanel
,该AsyncPostBackTrigger指向隐藏按钮,其中onclick事件处理程序将获得活动状态选项卡索引 - 但对于我希望DOM已经公开的东西来说,这似乎是很多动人的东西。
答案 0 :(得分:2)
太有帮助了,但我遇到了同样的问题并找到了解决方法。 改变你的代码
$(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已经被初始化了。
答案 1 :(得分:0)
检查this post以在回发期间保存标签选择。通过将活动选项卡索引保存在隐藏变量中,它适用于正常的回发。虽然它是在发布链接中为JQuery插件编写的,但概念应该是相同的,即保留所选选项卡的索引。