Parallel RadDockZones

6 posts, 0 answers
  1. Maik
    Maik avatar
    2 posts
    Member since:
    Oct 2008

    Posted 31 Oct 2008 Link to this post

    Hi,

    i have a little question.  I creating RadDockZones dynamically in my code and put them in a RadDockLayout control. Now i want to achieve that the RadDockZones are parellel and not one below the other as the RadDockLayout automatically does. I have tried to set the width of the RadDockZones but without the expected result...

    Thanks for your help out there
    Maik
  2. Petko
    Admin
    Petko avatar
    45 posts

    Posted 31 Oct 2008 Link to this post

    Hello Maik,

    There are several approaches to achieve the desired effect. One of them is to use the CSS property "float". 
    E.g.:
       protected void Page_Load(object sender, EventArgs e)  
        {  
            RadDockZone zone1 = new RadDockZone();  
            zone1.ID = "RadDockZone1";  
            zone1.Width = Unit.Pixel(200);  
            zone1.Style.Add("float", "left");  
            zone1.Style.Add("margin-right", "20px");  
              
            RadDockZone zone2 = new RadDockZone();  
            zone2.ID = "RadDockZone2";  
            zone2.Width = Unit.Pixel(200);  
            zone2.Style.Add("float", "left");  
              
            RadDockLayout layout = new RadDockLayout();  
            layout.ID = "RadDockLayout1";  
            layout.Controls.Add(zone1);  
            layout.Controls.Add(zone2);  
                      
            Page.Controls.Add(layout);          
         } 



    Kind regards,
    Petko
    the Telerik team

    Check out Telerik Trainer, the state of the art learning tool for Telerik products.
  3. Golu
    Golu avatar
    41 posts
    Member since:
    Dec 2008

    Posted 20 May 2009 Link to this post

    accoding to ur above code, zone created successfully, but how to find zone to add dock.?

    after adding a zone , all zones filled in dropdown list and accrding to selectedindexchanges dock added in selected zone.

    plz solve my problem?

     thnks

  4. Obi-Wan Kenobi
    Obi-Wan Kenobi  avatar
    460 posts
    Member since:
    Aug 2007

    Posted 20 May 2009 Link to this post

    You could use RadDockLayout1.RegisteredDocks(get all RadDocks) and RadDockLayout1.RegisteredZones(get all RadDockZones) collections.
  5. Golu
    Golu avatar
    41 posts
    Member since:
    Dec 2008

    Posted 25 May 2009 Link to this post

    Dear sir,

    I am creating fully customizes Dashboard.

    I am creating a RadDockZones dynamically successfuly.and I want to add zones on user demand.
    if user enter 1 row with 2 zones then it created 2 zones in a row if user enter 1 row with 1 zone then only single zone is added on a row.

    added 2 zoned in a row and give both zone names in dropdownlist, according to selected index change user add dock ( which zone name is seleted from DDL).
    I am trying but not getting i thnk missing something, will you please send me code ( but plz its fully dunamic)

    accoring to my code it created 2 zones parall but dock not added parall...plz check my code and loading panel also  not working. (I am remove all ajaxing all working on buttons click)

    sir plz answeing me ASAP our deadline is very very close.

    our code as follows..
    aspx..
    <table width="100%" border="1" cellpadding="1" cellspacing="0" class="aspxMainTable">
            <tr>
                <th class="tdMainHeader1">
                    <img alt="Customer" src="Images/dashboard.gif" />
                    Dashboard &nbsp;&nbsp;&nbsp;
                    <%--Zone Width :--%><telerik:RadTextBox ID="txtZoneWidth" runat="server" Width="150px"
                        Visible="false">
                    </telerik:RadTextBox>
                    &nbsp; Zone Layout
                    <telerik:RadComboBox ID="cmbZoneLayout" runat="server">
                        <Items>
                            <telerik:RadComboBoxItem Text="Select" Value="" Selected="true" />
                            <telerik:RadComboBoxItem Text="1 Row 1 column" Value="1,1" />
                            <telerik:RadComboBoxItem Text="1 Row 2 Column" Value="1,2" />
                        </Items>
                    </telerik:RadComboBox>
                    <asp:Button ID="btnAddZone" runat="server" Text="Add Zone" OnClick="btnAddZone_Click"
                        Width="100px" />
                    <%--OnClientClick="return ZoneWidthValidation();"--%>
                    Objects &nbsp;
                    <telerik:RadComboBox ID="cmbSelectDock" runat="server" Skin="Office2007">
                        <Items>
                            <telerik:RadComboBoxItem Text="Case Summary" Value="CaseSummary" />
                            <telerik:RadComboBoxItem Text="Task Summary" Value="TaskSummary" />
                            <telerik:RadComboBoxItem Text="Pending Tasks" Value="MyTask" />
                            <telerik:RadComboBoxItem Text="Pending Cases" Value="MyCase" />
                            <telerik:RadComboBoxItem Text="Overdue Cases" Value="OverdueCases" />
                        </Items>
                    </telerik:RadComboBox>
                    &nbsp;
                    <telerik:RadComboBox ID="cmbZone" runat="server" Skin="Office2007">
                    </telerik:RadComboBox>
                    &nbsp;
                    <asp:Button ID="btnAddDock" runat="server" Text="Add Dock" Width="100px" OnClick="btnAddDock_Click" /><%-- OnClientClick="return ValidateSave();"--%>
                    &nbsp;
                    <asp:Button ID="btnSaveDock" runat="server" Text="Save State" Width="100px" OnClick="btnSaveDock_Click" />
                </th>
            </tr>
            <tr>
                <td>
                    <telerik:RadDockLayout runat="server" ID="rdDockLayout" OnSaveDockLayout="rdDockLayout_SaveDockLayout"
                        Skin="Office2007" OnLoadDockLayout="rdDockLayout_LoadDockLayout">
                    </telerik:RadDockLayout>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Label ID="lblMessage" runat="server"></asp:Label>
                </td>
            </tr>
        </table>

    aspx.cs......
    int i = 0;
        int tempID;

        string dockState = "";
        string strDockTag = string.Empty;
        string strZone = string.Empty;
        string strZoneName = string.Empty;
        string strDockTagName = string.Empty;
        string strResult = string.Empty;

        DockStateWS objDockStateWS;
        DataSet dsDataSet;
        List<DockState> stateList;
        List<string> zoneList;
        StringBuilder serializedList = new StringBuilder();
        ArrayList zones = new ArrayList();

        private List<DockState> CurrentDockStates
        {
            get
            {
                List<DockState> _currentDockStates = (List<DockState>)Session["CurrentDockStatesMyPortal"];
                if (Object.Equals(_currentDockStates, null))
                {
                    _currentDockStates = new List<DockState>();
                    Session["CurrentDockStatesMyPortal"] = _currentDockStates;
                }
                return _currentDockStates;
            }
            set
            {
                Session["CurrentDockStatesMyPortal"] = value;
            }
        }

        private List<string> CurrentDockZoneIds
        {
            get
            {
                List<string> _currentDockZoneIds = (List<string>)Session["CurrentDockZoneIds"];
                if (Object.Equals(_currentDockZoneIds, null))
                {
                    _currentDockZoneIds = new List<string>();
                    Session["CurrentDockZoneIds"] = _currentDockZoneIds;
                }
                return _currentDockZoneIds;
            }
            set
            {
                Session["CurrentDockZoneIds"] = value;
            }
        }

        protected void Page_InIt(object sender, EventArgs e)
        {
            try
            {
                objDockStateWS = new DockStateWS();
                dsDataSet = new DataSet();

                dsDataSet = objDockStateWS.Fetch_Zones(0, 2,"1");

                if (dsDataSet.Tables["DockZones"].Rows.Count > 0)
                {
                    for (int i = 0; i < dsDataSet.Tables["DockZones"].Rows.Count; i++)
                    {
                        strZone = Convert.ToString(dsDataSet.Tables["DockZones"].Rows[i]["zone_control_id"]);
                        strZoneName = Convert.ToString(dsDataSet.Tables["DockZones"].Rows[i]["zone_control_name"]);                  
                        CreateRadDockZone(strZone,strZoneName);
                    }
                }

                for (int i = 0; i < CurrentDockStates.Count; i++)
                {
                    if (CurrentDockStates[i].Closed == false)
                    {
                        RadDock dock = CreateRadDockFromState(CurrentDockStates[i]);
                        rdDockLayout.Controls.Add(dock);
                        LoadWidget(dock);
                    }
                }
            }
            catch (Exception ex)
            {
                LogMessage(ex, 1, "Page_InIt");
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            //--counter for RadDockZone Name
            if (Convert.ToString(ViewState["Counter"]) == "")
            {
                tempID = 0;
            }
            else
            {
                tempID++;
            }

            if (!Page.IsPostBack)
            { 
                //-- from database
                try
                {
                    GetZones();
                }
                catch (Exception ex)
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "errMsg", "javascript:alert(\"Error:-Method -> 'Page_Init' \\n Description:- \\n" + ex.Message + "\");", true);
                    return;
                }
            }
        }

        protected void rdDockLayout_LoadDockLayout(object sender, DockLayoutEventArgs e)
        {
            bool bDocStateCreate = false;
           
            //--from database
            DataTable dt = new DataTable();       

            try
            {
                System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                //--use session
                foreach (DockState state in CurrentDockStates)
                {
                    bDocStateCreate = true;
                    e.Positions[state.UniqueName] = state.DockZoneID;
                    e.Indices[state.UniqueName] = state.Index;
                }

                if (bDocStateCreate == false)
                {
                    objDockStateWS = new DockStateWS();
                    dsDataSet = new DataSet();
                    dsDataSet = objDockStateWS.Fetch_Dock_State(0, 2);

                    if (dsDataSet.Tables["DockState"].Rows.Count > 0)
                    {
                        dockState = Convert.ToString(dsDataSet.Tables["DockState"].Rows[0]["dock_state"]);
                        string[] currentDockStates = dockState.Split('|');
                        foreach (string stringState in currentDockStates)
                        {
                            if (stringState.Trim() != string.Empty)
                            {
                                serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                                DockState state = serializer.Deserialize<DockState>(stringState);
                                RadDock dock = CreateRadDockFromState(state);
                                rdDockLayout.Controls.Add(dock);
                                LoadWidget(dock);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogMessage(ex, 1, "rdDockLayout_LoadDockLayout");
            }
        }

        protected void rdDockLayout_SaveDockLayout(object sender, DockLayoutEventArgs e)
        {
            CurrentDockStates = rdDockLayout.GetRegisteredDocksState();
        }

        private RadDock CreateRadDockFromState(DockState state)
        {
            RadDock dock = new RadDock();
            dock.ID = string.Format("RadDock{0}", state.UniqueName);
            dock.ApplyState(state);
            dock.Command += new DockCommandEventHandler(dock_Command);
            dock.Commands.Add(new DockCloseCommand());
            dock.CommandsAutoPostBack = true;

            return dock;
        }

        void dock_Command(object sender, DockCommandEventArgs e)
        {
            if (e.Command.Name == "Close")
            {
    ////            ScriptManager.RegisterStartupScript
    ////            (
    ////                UpdatePanel1, this.GetType(), "RemoveDock",
    ////                string.Format(@"function _removeDock() {{
    ////                Sys.Application.remove_load(_removeDock);
    ////                $find('{0}').undock();
    ////                $get('{1}').appendChild($get('{0}'));
    ////                $find('{0}').doPostBack('DockPositionChanged');
    ////                }};
    ////                Sys.Application.add_load(_removeDock);", ((RadDock)sender).ClientID, UpdatePanel1.ClientID),
    ////                true
    ////             );
                ScriptManager.RegisterStartupScript
               (
                   Page, this.GetType(), "RemoveDock",
                   string.Format(@"function _removeDock() {{
                    Sys.Application.remove_load(_removeDock);
                    $find('{0}').undock();
                    $get('{1}').appendChild($get('{0}'));
                    $find('{0}').doPostBack('DockPositionChanged');
                    }};
                    Sys.Application.add_load(_removeDock);", ((RadDock)sender).ClientID, Page.ClientID),
                   true
                );

            }
        }

        private RadDock CreateRadDock()
        {
            RadDock dock = new RadDock();
            dock.UniqueName = Guid.NewGuid().ToString();
            dock.ID = string.Format("RadDock{0}", dock.UniqueName);
            dock.Title = cmbSelectDock.SelectedItem.Text;
            dock.Text = string.Format("Added at {0}", DateTime.Now);
            dock.CommandsAutoPostBack = true;

            return dock;
        }

        private void CreateRadDockZone(string id, string name)
        {
            try
            {
                #region test code
                ///dynamica table           
                //if (cmbZoneLayout.SelectedValue == "1,2")
                //{             
                        RadDockZone zone1 = new RadDockZone();
                        RadDockZone zone2 = new RadDockZone();
                        if (id != null )
                        {
                            if (name == "RadDockZone0")
                                zone1.ID = id;
                            else if (name == "RadDockZone1")
                                 zone2.ID = id;
                        }                   
                        else
                        {
                            zone1.UniqueName = "RadDockZone0";
                            zone1.ID = "RadDockZone0";
                            zone1.Width = Unit.Pixel(200);
                            zone1.FitDocks = true;
                            zone1.Orientation = Orientation.Horizontal;
                            zone1.Skin = "Office2007";
                            zone1.Style.Add("float", "left");
                            zone1.Style.Add("margin-right", "20px");

                            zone2.UniqueName = "RadDockZone1";
                            zone2.ID = "RadDockZone1";
                            zone2.Width = Unit.Pixel(200);
                            zone2.FitDocks = true;
                            zone2.Orientation = Orientation.Horizontal;
                            zone2.Skin = "Office2007";
                            zone2.Style.Add("float", "left");

                           
                            objDockStateWS = new DockStateWS();
                            dsDataSet = new DataSet();
                            if (zone1.ID != null)
                            {
                                dsDataSet = objDockStateWS.Save_Zone(0, 2, Convert.ToString(zone1.ID), "1", Convert.ToString(zone1.UniqueName));
                            }
                            if (zone2.ID != null)
                            {
                                dsDataSet = objDockStateWS.Save_Zone(0, 2, Convert.ToString(zone2.ID), "1", Convert.ToString(zone2.UniqueName));
                            }

                            //--if success          
                            if (dsDataSet.Tables["Response"].Rows[0]["ResultCode"].ToString() != "0")
                            {
                                strResult = dsDataSet.Tables["Response"].Rows[0]["ResultString"].ToString();
                                LogMessage(new Exception(strResult), 1, "CreateRadDockZone");
                                return;
                            }
                            else
                            {
                                RadComboBoxItem rdbItem = new RadComboBoxItem(zone1.UniqueName, zone1.ID);
                                cmbZone.Items.Insert(cmbZone.Items.Count, rdbItem);

                                RadComboBoxItem rdbItem2 = new RadComboBoxItem(zone2.UniqueName, zone2.ID);
                                cmbZone.Items.Insert(cmbZone.Items.Count, rdbItem2);
                            }
                        }
                        if (id != null)
                        {
                            if (name == "RadDockZone0")
                                rdDockLayout.Controls.Add(zone1);
                            else if (name == "RadDockZone1")
                                rdDockLayout.Controls.Add(zone2);
                        }
                        else
                        {
                            rdDockLayout.Controls.Add(zone1);
                            rdDockLayout.Controls.Add(zone2);
                        }
                       
                //}
            }
                #endregion

                #region original code
            //    RadDockZone zone1 = new RadDockZone();
            //    if (id != null)
            //    {
            //        zone1.ID = id;
            //    }
            //    else
            //    {
            //        zone1.UniqueName = "RadDockZone" + tempID;
            //        zone1.ID = "RadDockZone" + Guid.NewGuid();
            //        zone1.Width = Unit.Pixel(200);
            //        zone1.FitDocks = true;
            //        zone1.Orientation = Orientation.Horizontal;
            //        zone1.Skin = "Office2007";
            //        zone1.Style.Add("float", "left");
            //        zone1.Style.Add("margin-right", "20px");

            //        objDockStateWS = new DockStateWS();
            //        dsDataSet = new DataSet();

            //        dsDataSet = objDockStateWS.Save_Zone(0, 2, Convert.ToString(zone1.ID), "1", Convert.ToString(zone1.UniqueName));
            //        ViewState["Counter"] = tempID;

            //        //--if success          
            //        if (dsDataSet.Tables["Response"].Rows[0]["ResultCode"].ToString() != "0")
            //        {
            //            strResult = dsDataSet.Tables["Response"].Rows[0]["ResultString"].ToString();
            //            LogMessage(new Exception(strResult), 1, "CreateRadDockZone");
            //            return;
            //        }
            //        else
            //        {
            //            RadComboBoxItem rdbItem = new RadComboBoxItem(zone1.UniqueName, zone1.ID);
            //            cmbZone.Items.Insert(cmbZone.Items.Count, rdbItem);
            //        }
            //    }
            //    rdDockLayout.Controls.Add(zone1);
            //}
    #endregion
            catch (Exception ex)
            {
                LogMessage(ex, 1, "CreateRadDockZone");
            }
        }

        private void LoadWidget(RadDock dock)
        {
            if (string.IsNullOrEmpty(dock.Tag))
            {
                return;
            }
            Control widget = LoadControl(dock.Tag);
            dock.ContentContainer.Controls.Add(widget);
        }

        protected void btnAddDock_Click(object sender, EventArgs e)
        {
            try
            {
                LoadUserControlsDynamically();
                RadDock dock = CreateRadDock();
                RadDockZone dz = (RadDockZone)rdDockLayout.FindControl(Convert.ToString(cmbZone.SelectedValue));
               
                dz.Controls.Add(dock);
                dock.Tag = strDockTag;
                LoadWidget(dock);
            }
            catch (Exception ex)
            {
                LogMessage(ex, 1, "btnAddDock_Click");
            }
        }

        void LogMessage(Exception e, Int32 param, string strMethodName)
        {
            if (param == 1)
            {
                lblMessage.Text = e.Message + "  Method:- " + strMethodName;
                lblMessage.CssClass = "error";
            }
            else
            {
                lblMessage.Text = e.Message;
                lblMessage.CssClass = "success";
            }
        }

        private void LoadUserControlsDynamically()
        {
            string strControlID = string.Empty;

            if (cmbSelectDock.SelectedValue == "CaseSummary")
            {
                UserControls_Case_Summary_CustCateg_Chart uclCaseSummary_Chart = (UserControls_Case_Summary_CustCateg_Chart)Page.LoadControl("~/UserControls/Case_Summary_CustCateg_Chart.ascx");
                strControlID = "uclCaseSummary_Chart" + TB_nUserID;
                uclCaseSummary_Chart.GetCaseSummary();
                strDockTag = "UserControls/Case_Summary_CustCateg_Chart.ascx";
            }
            else if (cmbSelectDock.SelectedValue == "TaskSummary")
            {
                UserControls_Task_Summary_Chart uclTaskSummary_Chart = (UserControls_Task_Summary_Chart)Page.LoadControl("~/UserControls/Task_Summary_Chart.ascx");
                strControlID = "uclTaskSummary_Chart" + TB_nUserID;
                uclTaskSummary_Chart.GetTaskSummary();
                strDockTag = "~/UserControls/Task_Summary_Chart.ascx";
            }
            else if (cmbSelectDock.SelectedValue == "MyTask")
            {
                UserControls_MyTask uclMyTask = (UserControls_MyTask)Page.LoadControl("~/UserControls/MyTask.ascx");
                strControlID = "uclTask" + TB_nUserID;
                uclMyTask.GetTasks();
                strDockTag = "~/UserControls/MyTask.ascx";
            }
            else if (cmbSelectDock.SelectedValue == "MyCase")
            {
                UserControls_MyCase uclMyCase = (UserControls_MyCase)Page.LoadControl("~/UserControls/MyCase.ascx");
                strControlID = "uclCase" + TB_nUserID;
                uclMyCase.GetCases();
                strDockTag = "~/UserControls/MyCase.ascx";
            }
            else if (cmbSelectDock.SelectedValue == "OverdueCases")
            {
                UserControls_OverdueCases uclOverdueCases = (UserControls_OverdueCases)Page.LoadControl("~/UserControls/OverdueCases.ascx");
                strControlID = "uclOverdueCase" + TB_nUserID;
                uclOverdueCases.GetOverDueCases();
                strDockTag = "~/UserControls/OverdueCases.ascx";
            }
        }

        protected void btnSaveDock_Click(object sender, EventArgs e)
        {
            try
            {
                //--Save Dock states in Database
                System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                stateList = rdDockLayout.GetRegisteredDocksState();

                while (i < stateList.Count)
                {
                    serializedList.Append(serializer.Serialize(stateList[i]));
                    serializedList.Append("|");
                    i++;
                }

                dockState = serializedList.ToString();
                if (dockState.Trim() != String.Empty)
                {
                    objDockStateWS = new DockStateWS();
                    dsDataSet = new DataSet();
                    dsDataSet = objDockStateWS.Save_Dock_State(0, 2, dockState);
                }
            }
            catch (Exception ex)
            {
                LogMessage(ex, 1, "btnSaveDock_Click");
            }
        }

        protected void btnAddZone_Click(object sender, EventArgs e)
        {
            CreateRadDockZone(null,null);
            zoneList = CurrentDockZoneIds;
        }

        private void GetZones()
        {
            objDockStateWS = new DockStateWS();
            dsDataSet = new DataSet();

            dsDataSet = objDockStateWS.Fetch_Zones(0, 2,"1");

            if (dsDataSet.Tables["DockZones"].Rows.Count > 0)
            {
                cmbZone.DataSource = dsDataSet;
                cmbZone.DataTextField = "zone_control_name";
                cmbZone.DataValueField = "zone_control_id";
                cmbZone.DataBind();
            }
        }

    thanks with regards

     

  6. Petio Petkov
    Admin
    Petio Petkov avatar
    825 posts

    Posted 27 May 2009 Link to this post

    Hello Neha,

    Please open a support ticket and send us a running project where we can observe the problem.Once we receive it we will do our best to help you.

    Best wishes,
    Petio Petkov
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Check out the tips for optimizing your support resource searches.
Back to Top