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

來源:互聯網
上載者:User
AspxCallbackPanel主要作用是對CallbackPanel內的內容進行非同步重新整理,實現此種效果的方法有很多,如Microsoft AJAX控制項中的UpdatePanel,比這種方式更為方便和好用.
下面這個例子就是通過一個ListBox,從用戶端回調AspxCallbackPanel,從而更新AspxCallbackPanel內的MultiView控制項顯示資訊。
 

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

Code
 <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的<PanelCollection>子項目下的.

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

Code
<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控制項來說還是有很大的協助的。

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.