在帖子后面保留当前的jQuery选项卡?

时间:2010-09-15 18:52:57

标签: asp.net jquery postback

我使用jQuery选项卡和ASP.NET listview来显示和编辑一些信息。我的问题是,当用户在其中一个listview项中插入新记录时,我的jQuery选项卡会返回到第一个选项卡。有没有办法跟踪我在哪个标签上或者不让它在帖子后面休息?

8 个答案:

答案 0 :(得分:31)

在ASP.NET中,您可以将其存储在隐藏字段中,而无需使用cookie(不需要jQuery cookie引用)。

使用此:

$(function () {
    $("#tabs").tabs({ 
        activate: function() {
            var selectedTab = $('#tabs').tabs('option', 'active');
            $("#<%= hdnSelectedTab.ClientID %>").val(selectedTab);
        },
        active: <%= hdnSelectedTab.Value %>
    });
});

然后在正文中,声明隐藏的标签字段:

<asp:HiddenField ID="hdnSelectedTab" runat="server" Value="0" />

基本上,在选择选项卡时,您将选中的选项卡值存储在asp隐藏字段中。然后在节目中显示您正在检索值。

答案 1 :(得分:29)

使用较新版本的jQuery和jQuery UI,这将是:

$(function () {
    $("#tabs").tabs({
        activate: function() {
            var selectedTab = $('#tabs').tabs('option', 'active');
            $("#<%= hdnSelectedTab.ClientID %>").val(selectedTab);
        },
        active: document.getElementById('<%= hdnSelectedTab.ClientID %>').value
    });
});

'selected'选项被'active'替换......当然你还需要添加隐藏字段:

<asp:HiddenField ID="hdnSelectedTab" runat="server" Value="0" />

答案 2 :(得分:4)

built-in supportjQuery cookie plugindirect download。你这样使用它:

$("#tabs").tabs({
  cookie: { expires: 7 }  //1 week
});

这与保持跨回发不一样,但它通常会提供所需的效果。

答案 3 :(得分:2)

试试这个:

添加到页面:

<asp:HiddenField ID="hdnSelectedTab" runat="server" Value="0" />

添加到脚本:

$(function () {
    var activeIndex = parseInt($get("hdnSelectedTab").value);
    $("#tabs").tabs({
        active: activeIndex,
        activate: function (event, ui) {
            $get("hdnSelectedTab").value = ui.newTab.index();
        }
    });
});

答案 4 :(得分:1)

此解决方案对我有用:来源http://saradesh.com/tajuddin/index.php/keep-the-selected-jquery-tab-active-on-partial-post-back-in-asp-net/

<script type="text/javascript">
        var selTab;
        $(function () {
            var tabs = $("#tabs").tabs({
                show: function () {
                    //get the selected tab index
                    selTab = $('#tabs').tabs('option', 'selected');

                }
            });

        });

    function pageLoad(sender, args) {

        if (args.get_isPartialLoad()) {

            $("#tabs").tabs({show: function () {
                    //get the selected tab index on partial postback
                    selTab = $('#tabs').tabs('option', 'selected');

                }, selected: selTab  });

        }
    };

    </script>

答案 5 :(得分:0)

您可以通过以下方式获取当前标签:

var selected = $tabs.tabs('option', 'selected');

然后,您可以通过执行以下操作选择选项卡(完成POST后):

$tabs.tabs('select', selected);

请注意,选项卡选择是基于0的索引,因此选择2意味着选择第三个选项卡。

答案 6 :(得分:0)

我不是.NET的人,但您可以挂钩表单的submit()事件,并将当前活动的选项卡与表单数据一起发送到服务器。以这种方式,您可以在实际生成DOM和JS时在服务器端选择适当的选项卡。

像...一样的东西。

$("#the_form").submit(function(){
  var $form            = $(this);
      selected_tab_idx = $("#the_tabs").tabs( "option", "selected" );
  $('<input />', {type: hidden, name: 'tab_index', value: selected_tab_idx}).appendTo( $form );
  return true;
});

答案 7 :(得分:0)

我正在使用cloudflare CDN中的jquery 3.5.0和jqueryui 1.12.1。

在.NET> = 3.5中,可以使用不带pip3 install -U pip 的ID。

所以在your.js中,以下内容对我有用:

def read_file_in_list (file_name):
    list = []
    with open (file_name,'r') as file:
        for line in file:
            lista.append ("\n")
            for word in line.split():
                list.append (" ")
                list.append(word)
    file.close()
    return list

/// ********

这超出了OP。但是,我必须保持标签:

<%= hdnSelectedTab.ClientID %>