在CompositeControl里面的Ajax TabContainer上设置ActiveTabIndex

时间:2009-12-10 22:25:09

标签: asp.net

我正在VB ASP.NET中创建一个CompositeControl。

我的控件有一个带有几个TabPanel的Ajax TabContainer。我需要对其进行编码,以便查询字符串上的值可以设置容器的ActiveTab。

无论此问题的查询字符串如何,在我的CreateChildControl代码中,我将ActiveTabIndex设置为有效的索引位置,但UI仍然将索引0设置为活动状态。

任何提示?有帮助吗?

1 个答案:

答案 0 :(得分:0)

对于我们来说,具体来说,我们编写了使我们完成此操作所需的Javascript。显示的页面有一个TabContainer。在第一个选项卡(主动显示的选项卡)上,我们有每个选项卡的描述,然后是指向它们的链接。单击该链接可使选项卡处于活动状态。这是团队成员的所作所为。

在超链接上,将“OnClick”的属性添加到我们称为“ChangeTab”的新JavaScript方法中。将任意索引号传递给方法,以赋予不同选项卡和选项卡控件的客户端ID

唯一性

在ASP.NET的预渲染期间,我们有一些代码

    Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs)
        MyBase.OnPreRender(e)

        Dim script As New System.Text.StringBuilder()

        script.AppendLine("<script type=""text/javascript"">")
        script.AppendLine("//<![CDATA[ ")
        script.AppendLine("function ChangeTab(num,tabContainer) {")
        script.AppendLine("   var container = $find(tabContainer);")
        script.AppendLine("   container.set_activeTabIndex(num);")
        script.AppendLine("}")
        script.AppendLine("//]]>")
        script.AppendLine("</script>")

        Page.ClientScript.RegisterClientScriptBlock(GetType(myPageOrControl), " ChangeTab", script.ToString)
    End Sub

最终结果是客户端脚本,它会在单击链接时将标签设置为活动状态。