DevExpress Asp.net(4) ASPxCallbackPanel的基本使用

iDotNetSpace發表於2009-08-03

AspxCallbackPanel主要作用是對CallbackPanel內的內容進行非同步重新整理,實現此種效果的方法有很多,如Microsoft AJAX控制元件中的UpdatePanel,比這種方式更為方便和好用.

下面這個例子就是通過一個ListBox,從客戶端回撥AspxCallbackPanel,從而更新AspxCallbackPanel內的MultiView控制元件顯示資訊。
 

首選,先在頁面中放置一個AspxCallbackPanel控制元件,並設定ClientInstanceName屬性為“CallbackPanel”。
程式碼如下:

DevExpress Asp.net(4) ASPxCallbackPanel的基本使用
 <dxcp:ASPxCallbackPanel ID="ASPxCallbackPanel" runat="server" ClientInstanceName="CallbackPanel"
                    OnCallback
="ASPxCallbackPanel_Callback" Width="100%">
  
dxcp:ASPxCallbackPanel>

設定ASPxCallbackPanel的ClientInstanceName屬性,並註冊OnCallback伺服器事件.上一節已經說明,DevExpress的Aspx系統控制元件的非同步更新方式都是一樣的,所以AspxCallbackPanel也同樣,註冊伺服器端的OnCallback事件,並從客戶端呼叫AspxCallbackPanel的 PerformCallback()方法.
接著看以下程式碼,在AspxCallbackPanel中放置一個MultiView.注意,MulitView中放置在AspxCallbackPanle的子元素下的.

DevExpress Asp.net(4) ASPxCallbackPanel的基本使用
<dxrp:PanelContent ID="PanelContent1" runat="server">
                
<dxcp:ASPxCallbackPanel ID="ASPxCallbackPanel" runat="server" ClientInstanceName="CallbackPanel"
                    OnCallback
="ASPxCallbackPanel_Callback" Width="100%">
                    
<PanelCollection>
                        
<dxp:PanelContent ID="PanelContent2" runat="server">
                            
<asp:MultiView ID="MultiView" runat="server">
                                
<asp:View ID="View1" runat="server">
                                    
<table>
                                        
<tr>
                                            
<td valign="top">
                                                
<dxe:ASPxLabel ID="ASPxLabel1" runat="server" Text="♣我是誰?不要告訴我是上班族,現在的上班族太民工;不要告訴我是民工,現在民工太缺錢;不要告訴我是富翁,富翁大都是暴發戶;不要告訴我是暴發戶,暴發戶都想當明星;不要告訴我是明星,現在明星就像上班族。"
                                                    Font-Bold
="True">
                                                
dxe:ASPxLabel>
                                            
td>
                                        
tr>
                                    
table>
                                
asp:View>
                                
<asp:View ID="View2" runat="server">
                                    
<table>
                                        
<tr>
                                            
<td valign="top">
                                                
<dxe:ASPxLabel ID="ASPxLabel3" runat="server" Text="♣許多人不知道自己失去過什麼,而時間總是耐心地給出答案。看著過去失去的東西,會有一種心痛的感覺!算是一種悔悟吧!"
                                                    Font-Bold
="True">
                                                
dxe:ASPxLabel>
                                            
td>
                                        
tr>
                                    
table>
                                
asp:View>
                                
<asp:View ID="View3" runat="server">
                                    
<table>
                                        
<tr>
                                            
<td valign="top">
                                                
<dxe:ASPxLabel ID="ASPxLabel5" runat="server" Text="♣一個人吻你,你一定被人深愛;不少人吻你,你一定是個漂亮的小孩;非常多的人吻你,你會被口水淹死"
                                                    Font-Bold
="True">
                                                
dxe:ASPxLabel>
                                            
td>
                                        
tr>
                                    
table>
                                
asp:View>
                            
asp:MultiView>
                         
dxp:PanelContent>
                    
PanelCollection>
                
dxcp:ASPxCallbackPanel>
            
dxrp:PanelContent>

接下來就是呼叫AspxCallbackPanel的PerformCallback()方法了,這裡我們放置了一個ASPxListBox,並註冊ASPxListbox的 ClientSideEvents事件中的 SelectedIndexChanged事件,如下:

DevExpress Asp.net(4) ASPxCallbackPanel的基本使用
<dxe:ASPxListBox ID="ASPxListBox1" runat="server" ClientInstanceName="ListBox" Height="83px">
        
<Items>
            
<dxe:ListEditItem Text="雷語1" Value="0" />
            
<dxe:ListEditItem Text="雷語2" Value="1" />
            
<dxe:ListEditItem Text="雷語3" Value="2" />
        
Items>
     
<ClientSideEvents SelectedIndexChanged="function(s, e) {
              var item = ListBox.GetSelectedItem();
              CallbackPanel.PerformCallback(item.value);   <!--此行就是呼叫AspxCallbackPanel的回撥方法 --&gt
          }"
 Init="function(s, e) {
              ListBox.SetSelectedIndex(0);
              CallbackPanel.PerformCallback(0);
          }"
 
      
/>                     
dxe:ASPxListBox>

當從客戶呼叫CallbackPanel.PerformCallback(value)的方法時,它會呼叫在伺服器端的OnCallback事件.

protected void ASPxCallbackPanel_Callback(object source, CallbackEventArgsBase e)
    {
        MultiView.ActiveViewIndex 
= Convert.ToInt32(e.Parameter); //啟用顯示的ViewID
    }


 

總結:
1 向頁面新增ASPxCallbackPanel元件,並設定ClientInstanceName屬性(客戶端標識,如 ClientInstanceName="CallbackPanel")。
2 註冊ASPxCallbackPanel元件的伺服器端事件ASPxCallback_Callback。
3 在客戶端使用者CallBack元件的客戶端方法PerformCallback方法,以呼叫伺服器端的ASPxCallbackPanel_Callback事件。
          程式碼:CallbackPanel.PerformCallback(id)

 

 

結論:

通過ASPxCallbackpanel與上一節的AspxCallBack的使用,我們發現DevExpress Aspx控制元件的回撥方法都是一致的。
     即新增ClientInstanceName
     註冊伺服器端的Callback事件
     呼叫ClientInstanceName.PerformCallback方法以執行伺服器端的Callback中的程式碼
     最後呼叫CallbackComplete事件,進行必要的處理(可選)

 


個人觀點:
ASPxCallbackPanel和AspxCallBack雖然提供了很多的機制來完成AJAx的操作,但從控制元件易用性上來講,ASPxCallbackPanel並不如UpdataPanel如用。
但通過ASPxCallbackPanel和CallBack元件的回撥學習,使我們知道了ASPx系列操作的回撥機制與流程,對於學習和了解其他ASPx控制元件來說還是有很大的幫助的。

原文地址:http://www.cnblogs.com/wservices/archive/2009/08/02/1535928.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-611136/,如需轉載,請註明出處,否則將追究法律責任。

相關文章