Skip to main content

Save and Restore Client Layout

  • 2 minutes to read

ASPxGridView allows you to save the following layout information to a database and then restore it:

  • column visible positions;
  • Grid and column width
  • Grid appearance settings
  • Filter, group, sort, and pager information

Use the ASPxGridView.SettingsCookies property to specify which ASPxGridView layout information to save.

Save Layout Automatically

Set the ASPxGridCookiesSettings.Enabled property to true to save a grid layout to cookies automatically.

<dx:ASPxGridView ID="ASPxGridView1" runat="server">
    <SettingsCookies Enabled="true" />

Save and Restore Layout Manually

  • The ASPxGridBase.ClientLayout event allows you to save a grid’s layout each time a user changes it and restore this layout on the first page load. Use the event’s ASPxClientLayoutArgs.LayoutMode property to specify whether to save or restore the grid’s layout.


    The grid requires a round trip to the server (a callback) to raise the ASPxGridBase.ClientLayout event.

    This example shows how to save or restore the ASPxGridView layout to or from a data store.

    protected void ASPxGridView1_ClientLayout(object sender, 
    DevExpress.Web.ASPxClientLayoutArgs e) {
        if (e.LayoutMode == DevExpress.Web.ClientLayoutMode.Saving) {
            SaveUserLayoutToDatabase(userID, "AccountGrid", e.LayoutData);
        else {
            if (System.IO.File.Exists(fileName))
                e.LayoutData = RestoreUserLayoutFromDatabase(userID, "AccountGrid");
  • The following two methods enable you to save and restore the grid layout.

    The example below shows how to save and restore the previously saved layout manually. When a user clicks the Save Layout or Load Layout button, the grid calls the ASPxClientGridView.PerformCallback method to send a callback to the server. This method raises the server-side ASPxGridView.CustomCallback event. Handle this event to save or restore the grid’s layout.

    protected void ASPxGridView1_CustomCallback(object sender,
        DevExpress.Web.ASPxGridViewCustomCallbackEventArgs e) {
        if (e.Parameters == "save") {
            SaveUserLayoutToDatabase("userID", "GridLayout", ASPxGridView1.SaveClientLayout());
        if (e.Parameters == "load") {
            ASPxGridView1.LoadClientLayout(GetUserLayoutFromDatabase("userID", "GridLayout"));