2013-07-24 54 views
0

在我繼承的項目中,我有一個名爲SpendSummContainer的控件。這個控件有一個jquery-ui選項卡對象。其中一個要求是,選中的選項卡在列處於編輯模式後保持選中狀態(該列有一個「編輯」鏈接,用於執行DoPostBack並將列置於編輯模式)。在DoPostBack事件後,ASP.NET HiddenField值爲空

以下所有內容均來自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> 

我已驗證隱藏字段正確填寫通過提醒回v在設置值之後。

問題是當執行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

您能否用activate替代select事件,並使用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" /> 
0

你是什麼意思?DoPostBack?你的意思是編輯鏈接是一個ASP.NET按鈕控件,發佈回窗體,或者你的意思是它是一個jQuery的Ajax功能?如果它是後者,那麼它實際上不是回發,而是從服務器的角度來看是一個新的請求。

這是我能想到的唯一不值得持久的值,因爲如果它是表單提交,然後是Page_Load事件,webforms生命週期應該使用表單中傳遞的值重新填充隱藏值。

相關問題