当AjaxControlToolkit TabContainer准备就绪时的Javascript?

时间:2011-06-23 16:57:31

标签: javascript jquery ajaxcontroltoolkit tabcontainer

我有一个带有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已经公开的东西来说,这似乎是很多动人的东西。

2 个答案:

答案 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插件编写的,但概念应该是相同的,即保留所选选项卡的索引。