v
Not logged inv
SearchAsk a QuestionReport an IssueMake a SuggestionMy Questions and Issues
Issue Details
Find By ID

CallbackPanel and nested TabPage too slow

Issue Details

Log in to Track Changes or Edit
Q200495
Question
Massimo Pedrini
Yes
Processed
Answered
.NET (ASP.NET)
ASPxperience Suite
8.3.4
Windows XP
Microsoft Visual Studio 2008
4/1/2009 4:27:07 PM
-> Created by Massimo Pedrini 3/30/2009 2:49:18 PM

I have a problem with the controls ASPxCallbackPanel and ASPxPageControl. Since I have nested an ASPxPageControl in a PanelContent (which is in turn nested in another parent PanelContent) of a control ASPxCallbackPanel the callback process fired on client side by the method ASPxCallbackPanel1.PerformCallback() has became much more slow. I would like to know if this malfunction is due to the nested position of the ASPxPageControl relative to ASPxCallbackPanel and if are there any control settings to change in order to speed up the CallBack process considering the server side code is particularly performing.
Together the html code which cause me this problems:
 
< dxcp : ASPxCallbackPanel ID =" ASPxCallbackPanel 1 " runat ="server" Width ="550px" ClientInstanceName ="DefaultContainerInput">
< PanelCollection >
    < dxp : PanelContent ID =" PanelContentA" runat ="server">
   
         < dxp : PanelContent ID =" PanelContentA1" Width ="100%" Visible ="false" runat ="server">
            < div id ="ErrorPanel" runat ="server" visible ="false" class ="errorpanel" ></ div >
         </ dxp : PanelContent >
        
         < dxp : PanelContent ID =" PanelContentA2" Width ="100%" Visible ="true" runat ="server">
            
            < dxtc : ASPxPageControl ID =" tabs" runat ="server" ActiveTabIndex ="0" Width ="100%">
                < TabPages >
                    < dxtc : TabPage Text ="Anagrafica" >
                        < ContentCollection >
                            < dxw : ContentControl runat ="server">
                               
                                CONTENT TabPage1
   
                            </ dxw : ContentControl >
                        </ ContentCollection >
                    </ dxtc : TabPage >
                    < dxtc : TabPage Text ="Permissions">
                        < ContentCollection >
                            < dxw : ContentControl runat ="server">
 
 
< dxcp : ASPxCallbackPanel ID =" ASPxCallbackPanel 2 " Width ="910px" runat ="server" ClientInstanceName ="DefaultPermCallBackContainer">
       
                < PanelCollection >
                    < dxp : PanelContent ID =" PanelContentB1" runat ="server">
 
                                    < dxwgv : ASPxGridView ID =" PermGrid1" Width ="910px" runat ="server">
                                    </ dxwgv : ASPxGridView >
 
                                    < dxwgv : ASPxGridView ID =" PermGrid2" Width ="910px" runat ="server">
                                    </ dxwgv : ASPxGridView >
                       
                    </ dxp : PanelContent >
                </ PanelCollection >
            </ dxcp : ASPxCallbackPanel >
 
                            </ dxw : ContentControl >
                        </ ContentCollection >
                    </ dxtc : TabPage >
                </ TabPages >
            </ dxtc : ASPxPageControl >
           
         </ dxp : PanelContent >
         
    </ dxp : PanelContent >
</ PanelCollection >
</ dxcp : ASPxCallbackPanel >

<- Reviewed by DevExpress Team 3/30/2009 3:29:47 PM
<- Processed (Answered) by DevExpress Team 3/31/2009 10:51:32 AM

Attachment: Sample.zip (7273 bytes)

Hello,

I've created a small project with two nested ASPxCallbackPanel controls. Testing them has revealed no performance degradation. Please provide us a complete project and give us more details on your server, its load, performance tests being used and their results.

Regards,
Alistair

-> Reactivated by Massimo Pedrini 4/1/2009 10:30:27 AM

Attachment: BSC3.rar (2875670 bytes)

Hello Alistair,

I have received your small test project and i observed the optimum performances.

So, i agree it's necessary to provide you a copy of my project which has been deprived of data access logic. (It's not necessary to instal a database to start the application).

The demo start page is Output/Anagrafiche/Series/Series.aspx.

To test the application follow the next steps:

1) Start the demo application i attached. (if you need to reload the start page you must click on the left Serie link in the Anagrafiche menu).

2) Right click on AspxGridView (which will be empty).

 3) Click on the ASPxPopupMenu item with the write "Click here to test the CallBackPanel" to test the CallBackPanel performance.

When the ASPxPageControl has been displayed it's possible to click on the Update Button to test the Callback Event which is handled by the following sub you can find in App_Code/LocPage.vb:

 

        Private Sub _DefCallBackContainer_Callback(ByVal source As Object, ByVal e As DevExpress.Web.ASPxClasses.CallbackEventArgsBase)

 

It' important you observe that all the User Controls in the web application folder named as "Serie" inherits from the corresponding class in EFControlsModels namespace that you can find in LockPage.vb file.

Despite all the data access logic has been totally removed from the web application you will notice that the CallBack performance degradation is evident.

I'm confident you will find a solution on how to speed up the callback process and i wait for your answer.

Regards,
Massimo

<- Processed (Answered) by DevExpress Team 4/1/2009 4:27:07 PM

Attachment: BSC3.zip (1408104 bytes)

Hello Massimo,

TThank you for the code you sent to us. Your application contains significant client and server code. So, it's difficult to identify the source of the slowdown. I suggest that you profile your application to find bottlenecks. I have some general recommendations which can speed up your application:
1) VB allows two ways of subscribing to events: traditional - via tags and aspx page, and via keyword Handles in vb code. If you use both simultaneously, two events are generated instead of one. Please review your code and select one.
2) set EnableCallbackCompression="true" if ISS HTTP compression is not enabled. See ASPxCallback.EnableCallbackCompression Property
3) set EnableCallBacks="true" and EnableCallBackMode="true" wherever possible. This decreases initial load time and the amount of data sent to a client.

I applied these recommendation to your code and discovered that your application ran faster. By the way, try to run your application without debug. It will be much faster.

Regards,
Alistair

Log in to Track Changes or Edit

Peer-to-Peer Discussion in DevExpress Forums

No discussion on this article has been started yet.

Please login to start discussion.

v
v
Search
Searching Tips