ITPub博客

首页 > Linux操作系统 > Linux操作系统 > DevExpress Asp.net(4) ASPxCallbackPanel的基本使用

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

原创 Linux操作系统 作者:iDotNetSpace 时间:2009-08-03 14:05:01 0 删除 编辑

AspxCallbackPanel主要作用是对CallbackPanel内的内容进行异步刷新,实现此种效果的方法有很多,如Microsoft AJAX控件中的UpdatePanel,比这种方式更为方便和好用.

下面这个例子就是通过一个ListBox,从客户端回调AspxCallbackPanel,从而更新AspxCallbackPanel内的MultiView控件显示信息。
 

首选,先在页面中放置一个AspxCallbackPanel控件,并设置ClientInstanceName属性为“CallbackPanel”。
代码如下:


 <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的子元素下的.


<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事件,如下:


<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的回调方法 -->
          }"
 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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5297798