在我继承的项目中,我有一个名为SpendSummContainer的控件。该控件有一个jquery-ui tabs对象。其中一个要求是,在将列放入编辑模式后,所选选项卡保持选中状态(该列具有执行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之后如何保持隐藏字段的值?
感谢。
答案 0 :(得分: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" />
答案 1 :(得分:0)
DoPostBack
你是什么意思?你的意思是编辑链接是一个回发到表单的ASP.NET按钮控件,或者你的意思是它是一个jquery ajax函数?如果它是后者,那么它实际上不是回发,而是从服务器的角度来看的新请求。
这是我唯一可以想到的值不存在的值,因为如果它是一个表单提交然后是Page_Load事件,那么webforms生命周期应该使用表单中传递的值重新填充隐藏值。