0

我在 ASP.NET 中使用 Juice UI 选项卡功能,在代码隐藏中动态构建选项卡,并发现在调用 OnActiveTabChanged 时无法获取活动选项卡的索引/ID。所以这就是我的 ASPX 页面中的所有内容:

juice:Tabs ID="dataTabs" runat="server" AutoPostBack="true" OnActiveTabChanged="dataTabs_ActiveTabChanged" /

当 dataTabs_ActiveTabChanged 触发时,我找不到一个实际上具有已选择选项卡的索引/ID 的属性。dataTabs.Active 和 dataTabs.Selected 始终为 0

选择给定的选项卡时,我需要采取一些操作服务器端,但是要这样做,需要能够告诉实际单击哪个选项卡。我在客户端玩过各种 jQuery 脚本,将隐藏对象设置为选项卡的值(测试激活和 beforeActivate 事件),但它们从不触发(在从不触发的 jQuery 函数中放置警报),我假设是因为我正在运行控制服务器端吗?

编辑:根据要求添加我的代码隐藏示例

这基本上是我在页面加载时填充选项卡的方式:

protected void loadAndPopulateTabs()
    {
        Juice.TabPage utilityTab = new Juice.TabPage();
        utilityTab.Title = "Utilities";
        utilityTab.ID = "utTab";

        string utilTabText = "sometext";
        dataTabContent dtcUT = new dataTabContent(utilTabText);

        utilityTab.TabContent = dtcUT;
        dataTabs.TabPages.Add(utilityTab);
}

目前,我的 OnActiveTabChanged 处理程序的代码隐藏相当空,而我正在四处寻找可以用来获取所选选项卡的属性:

protected void dataTabs_ActiveTabChanged(object sender, EventArgs e)
{
   int currentTab = dataTabs.Active;
}

我基本上是在使用那一行来中断,看看我是否能找到一种方法来获取任何可以告诉我选择了哪个选项卡的方法(sender.Active 也总是显示 0)

想法?

4

2 回答 2

0

找到了处理它的方法......几天前我搞砸了这个解决方案并且无法让它工作,但由于某种原因,它是今天。不知道我以前做错了什么。无论如何,解决方案是我发现很多使用 jQuery 选项卡的人必须这样做,将选定的选项卡存储在隐藏字段中并在代码隐藏中访问该值。我将此添加到我的页面:

     <script type="text/javascript">
         $(function () {
             $('#dataTabs').tabs({
                 beforeActivate: function (event, ui) {
                     $('#<%=selectedTab.ClientID %>').val(ui.newPanel.attr('id'));
                 }
             });
         });
         </script>

和:

     <asp:HiddenField runat="server" ID="selectedTab" />

当 dataTabs_ActiveTabChanged 触发时, selectedTab 的值是被选中的选项卡的名称。踢自己之前错过了这个。

于 2013-04-28T14:32:35.593 回答
0

应该阅读这个http://msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx
有一个页面生命周期
,如果你想在代码隐藏中添加标签,请在 init 中执行事件

protected void PageInit(object o, EventArgs e){
    loadAndPopulateTabs();
}

protected void loadAndPopulateTabs()
    {
        Juice.TabPage utilityTab = new Juice.TabPage();
        utilityTab.Title = "Utilities";
        utilityTab.ID = "utTab";

        string utilTabText = "sometext";
        dataTabContent dtcUT = new dataTabContent(utilTabText);

        utilityTab.TabContent = dtcUT;
        dataTabs.TabPages.Add(utilityTab);
}
于 2013-04-26T15:16:53.777 回答