Back to Devexpress

ASPxCallbackPanel.Callback Event

aspnet-devexpress-dot-web-dot-aspxcallbackpanel.md

latest7.3 KB
Original Source

ASPxCallbackPanel.Callback Event

Fires when a round trip to the server has been initiated by a call to the client ASPxClientCallbackPanel.PerformCallback method.

Namespace : DevExpress.Web

Assembly : DevExpress.Web.v25.2.dll

NuGet Package : DevExpress.Web

Declaration

csharp
public event CallbackEventHandlerBase Callback
vb
Public Event Callback As CallbackEventHandlerBase

Event Data

The Callback event's data class is CallbackEventArgsBase. The following properties provide information specific to this event:

PropertyDescription
ParameterGets a string that contains specific information (if any) passed from the client side.

Remarks

The Callback event allows any desired server-side processing to be performed in response to a call to the client ASPxClientCallbackPanel.PerformCallback method and the panel’s content to be updated as required.

Specific information passed from the client side can be obtained via the CallbackEventArgsBase.Parameter property.

Note

The ASPxClientCallbackPanel.BeginCallback and ASPxClientCallbackPanel.EndCallback client events can also be used to perform necessary client actions before and after callback processing.

Example

The ASPxCallbackPanel control provides a built-in loading panel, however you can implement a custom one. For this purpose, the default panel is hidden by setting the Enabled property to false. The custom panel is implemented using the ASPxLoadingPanel control. The callback panel’s BeginCallback and EndCallback client-side events are used to show and hide the loading panel respectively. Additionally, this example demonstrates how to add, modify, and hide controls in the ASPxCallbackPanel control in the Callback event handler.

View Example

aspx
<style>
    .sendCommentBlock {
        margin: 20px 0;
    }

    .comment {
        border-bottom: 1px dashed #888888;
    }
</style>
<script>
    function SendCommentCallback(s, e) {
        CallbackPanel.PerformCallback();
    };

    function OnBeginCallback(s, e) {
        LoadingPanel.Show();
    };

    function OnEndCallback(s, e) {
        LoadingPanel.Hide();
    };
</script>
<dx:ASPxButton ID="Button" runat="server" Text="Post Comment" AutoPostBack="false">
    <ClientSideEvents Click="SendCommentCallback" />
</dx:ASPxButton> 




<dx:ASPxTextBox ID="TextBox" runat="server" Width="170px"></dx:ASPxTextBox>
...
<dx:ASPxCallbackPanel ID="CallbackPanel" ClientInstanceName="CallbackPanel" 
    runat="server"
    CssClass="pnl"
    Width="300px"
    OnCallback="CallbackPanel_Callback"
    OnInit="CallbackPanel_Init">
    <SettingsLoadingPanel Enabled="false" />
    <ClientSideEvents BeginCallback="OnBeginCallback" EndCallback="OnEndCallback" />
    <PanelCollection>
        <dx:PanelContent>
            <dx:ASPxLabel ID="CountLabel" runat="server" Text="Comments Count : "></dx:ASPxLabel>
            

            

            <dx:ASPxLabel ID="NoCommentsLabel" runat="server" Text="No Comments" ForeColor="Gray"></dx:ASPxLabel>
        </dx:PanelContent>
    </PanelCollection>
</dx:ASPxCallbackPanel>
...
<dx:ASPxLoadingPanel ID="LoadingPanel" ClientInstanceName="LoadingPanel"
    runat="server"
    Modal="true"
    HorizontalAlign="Center"
    VerticalAlign="Middle">
    <Image Url="Images/load.gif" Height="50px" Width="50px"></Image>
</dx:ASPxLoadingPanel>
csharp
using DevExpress.Web;

public partial class _Default : System.Web.UI.Page {
    protected void CallbackPanel_Callback(object sender, DevExpress.Web.CallbackEventArgsBase e) {
        ASPxCallbackPanel panel = (ASPxCallbackPanel)sender;
        NoCommentsLabel.Visible = false;
        Thread.Sleep(3000);

        ASPxLabel comment = new ASPxLabel() {
            Text = string.Format("[{0}]\n{1}\n\n",
                DateTime.Now.ToLocalTime(),
                !string.IsNullOrEmpty(TextBox.Text) ? TextBox.Text : "Empty comment"
            ),
            CssClass = "comment"
        };

        List<ASPxLabel> comments = (List<ASPxLabel>)Session["comments"] ?? new List<ASPxLabel>();

        comments.Add(comment);
        panel.Controls.Add(comment);
        Session["comments"] = comments;

        CountLabel.Text = "Comments Count : " + comments.Count;
    }

    protected void CallbackPanel_Init(object sender, EventArgs e) {
        if(!IsPostBack && !IsCallback)
            Session.Clear();
        RecreateComments(sender);
    }

    private void RecreateComments(object sender) {
        List<ASPxLabel> comments;
        if((comments = (List<ASPxLabel>)Session["comments"]) != null) {
            CountLabel.Text = "Comments Count : " + comments.Count;
            ASPxCallbackPanel panel = (ASPxCallbackPanel)sender;
            NoCommentsLabel.Visible = false;
            foreach(ASPxLabel comment in comments) {
                panel.Controls.Add(comment);
            }
        }
    }
}
vb
Imports DevExpress.Web

Partial Public Class _Default
    Inherits System.Web.UI.Page

    Protected Sub ASPxCallbackPanel1_Callback(ByVal sender As Object, ByVal e As DevExpress.Web.CallbackEventArgsBase)
        Dim panel As ASPxCallbackPanel = DirectCast(sender, ASPxCallbackPanel)

        ' Perform long task
        Thread.Sleep(5000)

        ' Add/Modify/Hide controls inside callback panel
        TimeLabel.Text = Date.Now.ToLongDateString()
        TimeLabel.ForeColor = Color.Green
        TextBoxToHide.Visible = False
        ButtonToDisable.Enabled = False

        panel.Controls.Add(New ASPxHyperLink() With {.NavigateUrl = "https://www.devexpress.com/sc", .Text = "Navigate to DevExpress support center"})
    End Sub
End Class

See Also

PerformCallback(parameter)

Parameter

BeginCallback

EndCallback

Callback Panel

Callbacks

ASPxCallbackPanel Class

ASPxCallbackPanel Members

DevExpress.Web Namespace