2012-05-16 102 views
0

我使用ASPxperience控件進行測試。我有一個簡單的CallbackPanel,裏面有一個文本框和一個PageControl。 只是爲了測試,我有一個按鈕放在callback面板下。點擊時,我想向PageControl添加一個額外的選項卡。DevExpress aspxCallbackPanel行爲和控制狀態

標記:

<dx:ASPxCallbackPanel ID="ASPxCallbackPanel1" runat="server" Width="200px" OnCallback="ASPxCallbackPanel1_Callback1"> 
    <PanelCollection> 
     <dx:PanelContent runat="server"> 
      <dx:ASPxPageControl ID="ASPxPageControl1" runat="server" ActiveTabIndex="0" ClientInstanceName="PageControl1" 
       Height="359px" Width="538px"> 
       <TabPages> 
        <dx:TabPage> 
         <ContentCollection> 
          <dx:ContentControl runat="server"> 
          </dx:ContentControl> 
         </ContentCollection> 
        </dx:TabPage> 
       </TabPages> 
      </dx:ASPxPageControl> 
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
     </dx:PanelContent> 
    </PanelCollection> 
</dx:ASPxCallbackPanel> 

<input id="Button1" type="button" value="button" onclick="ASPxCallbackPanel1.PerformCallback('addtab');" /> 

代碼隱藏

protected void ASPxCallbackPanel1_Callback1(object sender, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e) 
    { 
     ASPxPageControl1.TabPages.Add("Test"); 
     TextBox1.Text += "1"; 
    } 

現在奇怪的是,每次單擊該按鈕,在文本框中總是有「1」添加到文本框的內容。所以如果你點擊5次,它會顯示:'11111'。 但是,PageControl總是刪除(或忘記或忽略?)前一個添加的選項卡,因此您總是隻剩下一個名爲'test'的額外選項卡。

這是怎麼回事?我不明白? (我是相當新的這種控制套件)

+1

這裏是對類似問題的DevEx支持[回覆](http://www.devexpress.com/Support/Center/p/Q343098.aspx)。 – Filip

回答

2

隨着ASPxCallbackPanel的,您可以訪問ViewState,因爲它被髮送到服務器,但相同的ViewState不能在回調過程中被改變服務器端,所以它不會在最後更新。這種行爲是有目的的,所以你不能做太多的事情。

在你的特定情況下,唯一已知的狀態是加載第一頁加載的狀態,所以在回調中,唯一已知的TabPage是標記狀態。

您可以:

  1. 設計所有的標記標籤(或與此有關的第一負載),並使用ASPxPageControl client-side APIASPxTabPage client-side API使其可見/不可見。

  2. 使用UpdatePanel它允許您訪問和更改ViewState