0

在我继承的一个项目中,我有一个名为 SpendSummContainer 的控件。这个控件有一个 jquery-ui 选项卡对象。其中一项要求是,在其中一个列处于编辑模式后,选定的选项卡保持选中状态(该列具有执行 DoPostBack 并将列置于编辑模式的“编辑”链接)。

以下所有内容均来自 SpendSummContainer 控件。

这些选项卡是标准的 jquery-ui 选项卡,如下所示:

<div id="tabs">
    <ul>
    <li><a href="#tabs-1">First Tab</a></li>
    <li><a href="#tabs-2">Second Tab</a></li>
    <li><a href="#tabs-3">Third Tab</a></li>
    </ul>
<div id="tabs-1">Stuff goes here</div>
<div id="tabs-3">Stuff goes here</div>
<div id="tabs-2">Stuff goes here</div>
</div>

然后,我在表单上有一个 ASP.NET 隐藏字段,

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

最后,我有以下 javascript,

<script type="text/javascript">
    $(document).ready(function () {
        $("#tabs").tabs({
            select: function (event, ui) {
                $('#<%= activeTab.ClientID %>').val(ui.index.toString());
            }
        });
    });
</script>

我已经通过在设置值后提醒该值来验证隐藏字段是否正确填充。

问题是执行 DoPostBack 时,activeTab.value 属性为空。

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim selectedTab As string = activeTab.Value
End Sub

所以我的问题是,如何在 DoPostBack 之后保持隐藏字段的值?

谢谢。

4

2 回答 2

1

select您可以用activate事件替换并使用ui.newTab.index()吗?

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<div id="tabs">
    <ul>
        <li><a href="#tabs-1">First Tab</a></li>
        <li><a href="#tabs-2">Second Tab</a></li>
        <li><a href="#tabs-3">Third Tab</a></li>
    </ul>
    <div id="tabs-1">1 Stuff goes here</div>
    <div id="tabs-2">2 Stuff goes here</div>
    <div id="tabs-3">3 Stuff goes here</div>
</div>
<script type="text/javascript">
    $(document).ready(function () {
        $("#tabs").tabs({
            activate: function (event, ui) {
                $('#<%= activeTab.ClientID %>').val(ui.newTab.index());
            }
        });
    });
</script>
<asp:HiddenField ID="activeTab" runat="server" />
于 2013-07-24T17:10:34.367 回答
0

你是什​​么意思DoPostBack?你的意思是编辑链接是一个 ASP.NET 按钮控件,它是回发到窗体,还是你的意思是它是一个 jquery ajax 函数?如果是后者,那么它实际上不是回发,而是从服务器的角度来看的新请求。

这是我唯一能想到的值不持久的事情,因为如果它是表单提交,那么通过 Page_Load 事件,webforms 生命周期应该使用表单中传递的值重新填充隐藏值。

于 2013-07-24T14:58:06.287 回答