3

我有一个带有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 事件,但我没有看到)。如果没有可以轻松处理的事件,似乎可以添加一个UpdatePanelwith UpdateMode=Conditional 和一个指向隐藏按钮的 AsyncPostBackTrigger ,该按钮带有一个可以获取活动选项卡索引的 onclick 事件处理程序——但是对于我希望 DOM 已经公开的东西来说,这似乎是很多可动的部分。

4

2 回答 2

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 已经被初始化了。

于 2014-02-14T18:31:39.307 回答
0

检查此帖子以在回发期间保存选项卡选择。通过将活动标签索引保存在隐藏变量中,它适用于正常的回发。虽然它是在发布的链接中为 JQuery 插件编写的,但概念应该是相同的,即保留所选选项卡的索引。

于 2012-10-12T19:51:43.383 回答