protected void Page_Init(object sender, EventArgs e)
    {
        int columnNumber = 0;
        int zoneIndex    = -1;

        for (int index = 0; index <= 15; index++)
        {
            if (index % 4 == 0)
            {
                zoneIndex   += 1;
                columnNumber = 0;
            }
            columnNumber += 1;
            ASPxDockPanel panel = new ASPxDockPanel();
            panel.ID = String.Format("panel{0}", index);
            Form.Controls.Add(panel);
            panel.OwnerZoneUID     = String.Format("zone{0}", zoneIndex);
            panel.Width            = 200;
            panel.Height           = 200;
            panel.MaxHeight        = 200;
            panel.VisibleIndex     = columnNumber;
            panel.AllowedDockState = AllowedDockState.DockedOnly;
            panel.HeaderText       = String.Format("Panel{0}", index);
        }
        for (int index = 0; index < 4; index++)
        {
            ASPxDockZone zone = new ASPxDockZone();
            zone.ID = String.Format("zone{0}", index);
            Form.Controls.Add(zone);
            zone.Width       = 800;
            zone.Height      = 200;
            zone.Orientation = DockZoneOrientation.Horizontal;
            zone.ZoneUID     = String.Format("zone{0}", index);
        }
    }
    protected void CreatePanelWithWrapper(string panelID, bool visible)
    {
        const string WrapperIDPostfix = "_DPW";

        WebControl wrapperDiv = new WebControl(HtmlTextWriterTag.Div);

        wrapperDiv.ID      = panelID + WrapperIDPostfix;
        wrapperDiv.Visible = visible;
        ASPxDockPanel panel = new ASPxDockPanel();

        panel.ID      = panelID;
        panel.Visible = visible;
        panel.Text    = "Example text";
        wrapperDiv.Controls.Add(panel);
        ASPxCallbackPanel1.Controls.Add(wrapperDiv);
    }
    private void AddControlToPanel(string controlId, ASPxDockPanel panel)
    {
        Control c = null;

        if (controlId.Equals("control1"))
        {
            c = LoadControl("~/WebUserControl.ascx");
        }
        else if (controlId.Equals("control2"))
        {
            c = LoadControl("~/WebUserControl2.ascx");
        }
        else if (controlId.Equals("control3"))
        {
            c = LoadControl("~/WebUserControl3.ascx");
        }
        c.ID = controlId;
        panel.Controls.Add(c);
    }
    protected void ASPxCallbackPanel1_Callback(object sender, CallbackEventArgsBase e)
    {
        if (e.Parameter == "")
        {
            return;
        }

        string           layout = grid.GetRowValues(Convert.ToInt32(e.Parameter), "LayoutString").ToString();
        LayoutDataParser parser = new LayoutDataParser();
        List <DockPanel> list   = parser.GetPanelsInfo(layout);

        foreach (DockPanel panel in list)
        {
            ASPxDockPanel dockPanel = ASPxDockManager1.FindPanelByUID(panel.PanelUID);
            dockPanel.ShowOnPageLoad   = panel.ShowOnPageLoad;
            dockPanel.AllowedDockState = ConvertToDockState(panel.DockState);
            dockPanel.OwnerZoneUID     = panel.OwnerZoneUID;
            dockPanel.Width            = panel.Width;
            dockPanel.Height           = panel.Height;
            dockPanel.Top          = panel.Top;
            dockPanel.Left         = panel.Left;
            dockPanel.VisibleIndex = panel.VisibleIndex;
        }
    }