When i move more docks, after the 3rd dock i get an error 500.
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Telerik.Web.UI;using System.Data.SqlClient;using System.Text;using System.Collections;using System.Configuration;public partial class mods_arrange : System.Web.UI.UserControl{ private int _userID = 1; private SqlConnection _conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); private List<DockState> CurrentDockStates { get { //Get saved state string from the database - set it to dockState variable for example string dockStatesFromDB = ""; if (Request.Cookies["landingStates_V"] != null) { dockStatesFromDB = Request.Cookies["landingStates_V"].Value; } else { _conn.Open(); SqlCommand command = new SqlCommand("select State from landing_States where id='" + _userID + "' ", _conn); dockStatesFromDB = command.ExecuteScalar().ToString(); _conn.Close(); } List<DockState> _currentDockStates = new List<DockState>(); string[] stringStates = dockStatesFromDB.Split('|'); foreach (string stringState in stringStates) { if (stringState.Trim() != string.Empty) { _currentDockStates.Add(DockState.Deserialize(stringState)); } } return _currentDockStates; } } protected void Page_Load(object sender, EventArgs e) { //RadAjaxManager manager = RadAjaxManager.GetCurrent(Page); //manager.ClientEvents.OnRequestStart = "RequestStart"; //manager.ClientEvents.OnResponseEnd = "ResponseEnd"; if (!IsPostBack) { DropDownZone.DataBind(); } } public ArrayList GetZones() { ArrayList zones = new ArrayList(); zones.Add(RadDockZone1); zones.Add(RadDockZone2); zones.Add(RadDockZone3); return zones; } protected void Page_Init(object sender, EventArgs e) { //Recreate the docks in order to ensure their proper operation for (int i = 0; i < CurrentDockStates.Count; i++) { if (CurrentDockStates[i].Closed == false) { RadDock dock = CreateRadDockFromState(CurrentDockStates[i]); //We will just add the RadDock control to the RadDockLayout. // You could use any other control for that purpose, just ensure // that it is inside the RadDockLayout control. // The RadDockLayout control will automatically move the RadDock // controls to their corresponding zone in the LoadDockLayout // event (see below). RadDockLayout1.Controls.Add(dock); //We want to save the dock state every time a dock is moved. CreateSaveStateTrigger(dock); //Load the selected widget LoadWidget(dock); } } loadCheckboxes(); } private void loadCheckboxes() { ListItem i1 = new ListItem("News", "~/Controls/News.ascx"); ListItem i2 = new ListItem("Events", "~/Controls/Events.ascx"); ListItem i3 = new ListItem("Languages", "~/Controls/Languages.ascx"); ListItem i4 = new ListItem("Market", "~/Controls/MarketIndex.ascx"); ListItem i5 = new ListItem("VC", "~/Controls/VC.ascx"); ListItem i6 = new ListItem("DVD", "~/Controls/DVD.ascx"); ListItem i7 = new ListItem("PIF", "~/Controls/PIF.ascx"); CheckBoxList1.Items.Add(i1); CheckBoxList1.Items.Add(i2); CheckBoxList1.Items.Add(i3); CheckBoxList1.Items.Add(i4); CheckBoxList1.Items.Add(i5); CheckBoxList1.Items.Add(i6); CheckBoxList1.Items.Add(i6); LcookieCheck(); } protected void RadDockLayout1_LoadDockLayout(object sender, DockLayoutEventArgs e) { //Populate the event args with the state information. The RadDockLayout control // will automatically move the docks according that information. //if (!IsPostBack) //{ // foreach (DockState state in CurrentDockStates) // { // e.Positions[state.UniqueName] = state.DockZoneID; // e.Indices[state.UniqueName] = state.Index; // } //} if (!Page.IsPostBack) { string dockStatesFromCookie = ""; HttpCookie cookieStates = Request.Cookies["dockState"]; if (cookieStates != null) { dockStatesFromCookie = cookieStates.Value; string[] stringStates = dockStatesFromCookie.Split('|'); Hashtable states = new Hashtable(); for (int i = 0; i < stringStates.Length - 1; i++) { string[] currentState = stringStates[i].Split('#'); string uniqueName = currentState[0]; string state = currentState[1]; states.Add(uniqueName, state); } foreach (RadDock dock in RadDockLayout1.RegisteredDocks) { string uniqueName = dock.UniqueName; DockState state = DockState.Deserialize(states[uniqueName].ToString()); dock.ApplyState(state); } } } } protected void RadDockLayout1_SaveDockLayout(object sender, DockLayoutEventArgs e) { List<DockState> stateList = RadDockLayout1.GetRegisteredDocksState(); StringBuilder serializedList = new StringBuilder(); int i = 0; while (i < stateList.Count) { serializedList.Append(stateList[i].ToString()); serializedList.Append("|"); i++; } string dockState = serializedList.ToString(); if (dockState.Trim() != String.Empty) { if (Request.Cookies["landingStates_V"] != null) { Response.Cookies["landingStates_V"].Value = dockState; } else { Response.Cookies["landingStates_V"].Value = dockState; Response.Cookies["landingStates_V"].Expires = DateTime.Now.AddDays(5); } _conn.Open(); //SqlCommand command = new SqlCommand(String.Format("update landing_States set State='{0}' where id='" + _userID + "'", dockState), _conn); //command.ExecuteNonQuery(); //update Dbase _conn.Close(); } } private RadDock CreateRadDockFromState(DockState state) { RadDock dock = new RadDock(); dock.DockMode = DockMode.Docked; dock.ID = string.Format("RadDock{0}", state.UniqueName); dock.ApplyState(state); //by aresh dock.DefaultCommands = Telerik.Web.UI.Dock.DefaultCommands.None; dock.DockMode = DockMode.Docked; dock.CssClass = "vbox" + state.Title.Replace(' ', 'a'); DockToggleCommand cmd = new DockToggleCommand(); cmd.OnClientCommand = "OnClientCommand" + state.Title.Replace(' ', 'a'); cmd.Text = "Edit"; cmd.CssClass = "rdEdit"; cmd.AutoPostBack = false; DockCloseCommand cmdclose = new DockCloseCommand(); cmdclose.AutoPostBack = false;//true; DockExpandCollapseCommand cmdminmax = new DockExpandCollapseCommand(); cmdminmax.AutoPostBack = false; dock.Commands.Add(cmdclose); dock.Commands.Add(cmdminmax); //dock.Commands.Add(cmd); return dock; } private RadDock CreateRadDock(String name) { int docksCount = CurrentDockStates.Count; RadDock dock = new RadDock(); dock.DockMode = DockMode.Docked; dock.UniqueName = Guid.NewGuid().ToString().Replace(' ', 'a'); dock.ID = string.Format("RadDock{0}", dock.UniqueName); dock.Title = name.Replace('_', ' '); dock.Width = Unit.Pixel(300); //by aresh dock.DefaultCommands = Telerik.Web.UI.Dock.DefaultCommands.None; dock.DockMode = DockMode.Docked; dock.CssClass = "vbox" + name.Replace(' ', 'a'); DockToggleCommand cmd = new DockToggleCommand(); cmd.OnClientCommand = "OnClientCommand" + name.Replace(' ', 'a'); ; cmd.Text = "Edit"; cmd.CssClass = "rdEdit"; cmd.AutoPostBack = false; DockCloseCommand cmdclose = new DockCloseCommand(); cmdclose.AutoPostBack = false;//true; DockExpandCollapseCommand cmdminmax = new DockExpandCollapseCommand(); cmdminmax.AutoPostBack = false; dock.Commands.Add(cmdclose); dock.Commands.Add(cmdminmax); //dock.Commands.Add(cmd); return dock; } private void CreateSaveStateTrigger(RadDock dock) { //Ensure that the RadDock control will initiate postback // when its position changes on the client or any of the commands is clicked. //Using the trigger we will "ajaxify" that postback. dock.AutoPostBack = true; dock.CommandsAutoPostBack = false; AjaxUpdatedControl updatedControl = new AjaxUpdatedControl(); updatedControl.ControlID = "Panel1"; AjaxSetting setting1 = new AjaxSetting(dock.ID); setting1.EventName = "DockPositionChanged"; setting1.UpdatedControls.Add(updatedControl); RadAjaxManagerArrange.AjaxSettings.Add(setting1); } private void LoadWidget(RadDock dock) { if (string.IsNullOrEmpty(dock.Tag)) { return; } Control widget = LoadControl(dock.Tag); dock.ContentContainer.Controls.Add(widget); } protected void ButtonAddDock_Click(object sender, EventArgs e) { //Load the selected widget in the RadDock control foreach (ListItem con in CheckBoxList1.Items) { if (con.Selected == true) { WcookieCheck(con.Value, con.Text); RadDock dock = CreateRadDock(con.Text); //find the target zone and add the new dock there RadDockZone dz = (RadDockZone)FindControl(DropDownZone.SelectedItem.Text); dz.Controls.Add(dock); CreateSaveStateTrigger(dock); dock.Tag = con.Value; LoadWidget(dock); //Register a script to move dock to the last place in the RadDockZone //The zone.dock(dock,index) client-side method is used ScriptManager.RegisterStartupScript(this, this.GetType(), "MoveDock", string.Format(@"function _moveDock() {{ Sys.Application.remove_load(_moveDock); $find('{1}').dock($find('{0}'),{2}); }}; Sys.Application.add_load(_moveDock);", dock.ClientID, DropDownZone.SelectedValue, dz.Docks.Count), true); } }Response.Redirect("/default.aspx"); } protected void ButtonPostBack_Click(object sender, EventArgs e) { if (Request.Cookies["landingChecks_V"] != null) { HttpCookie myCookie = new HttpCookie("landingChecks_V"); myCookie.Expires = DateTime.Now.AddDays(-1d); Response.Cookies.Add(myCookie); } Response.Redirect("default.aspx"); } private void WcookieCheck(string val, string txt) { HttpCookie cookie = Request.Cookies["landingChecks_V"]; if (cookie != null) { cookie.Expires = DateTime.Now.AddYears(-30); Response.Cookies.Remove("landingChecks_V"); HttpCookie Newcookie = new HttpCookie("landingChecks_V"); Newcookie.Expires = DateTime.Now.AddDays(5); Newcookie.Values.Add(val, txt); Response.Cookies.Add(Newcookie); cookie.Values.Add(val, txt); Response.Cookies.Add(cookie); } else { HttpCookie Newcookie = new HttpCookie("landingChecks_V"); Newcookie.Expires = DateTime.Now.AddDays(5); Newcookie.Values.Add(val, txt); Response.Cookies.Add(Newcookie); } } private void LcookieCheck() { HttpCookie cookie = Request.Cookies["landingChecks_V"]; if (cookie != null && cookie.Values != null) { foreach (string key in cookie.Values.Keys) { ListItem item = CheckBoxList1.Items.FindByValue(key); if (item != null) { item.Selected = true; } } } else { CheckBoxList1.Items[0].Selected = true; CheckBoxList1.Items[1].Selected = true; CheckBoxList1.Items[2].Selected = true; CheckBoxList1.Items[3].Selected = true; CheckBoxList1.Items[4].Selected = true; CheckBoxList1.Items[5].Selected = true; CheckBoxList1.Items[6].Selected = true; } }}how do i load the docks from the cookie state using the checkboxes?
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="arrange.ascx.cs" Inherits="mods_arrange" %><div class="content-in"> <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> <script type="text/javascript"> var currentLoadingPanel = null; var currentUpdatedControl = null; function RequestStart(sender, args) { currentLoadingPanel = $find("<%= LoadingPanel1.ClientID %>"); currentUpdatedControl = "TableLayout"; currentLoadingPanel.show(currentUpdatedControl); } function ResponseEnd() { //hide the loading panel and clean up the global variables if (currentLoadingPanel != null) currentLoadingPanel.hide(currentUpdatedControl); currentUpdatedControl = null; currentLoadingPanel = null; } </script> </telerik:RadCodeBlock> <br /> <asp:Panel ID="Panel1" runat="server"> <telerik:RadDockLayout runat="server" ID="RadDockLayout1" OnSaveDockLayout="RadDockLayout1_SaveDockLayout" OnLoadDockLayout="RadDockLayout1_LoadDockLayout" EnableEmbeddedSkins="false" Skin="myx" EnableViewState="false"> <table id="TableLayout" border="0" cellspacing="0" cellpadding="0"> <tr> <td> <div class="left"> <telerik:RadDockZone runat="server" ID="RadDockZone1" > </telerik:RadDockZone> </div> <div class="center"> <telerik:RadDockZone runat="server" ID="RadDockZone2" > </telerik:RadDockZone> </div> <div class="right"> <telerik:RadDockZone runat="server" ID="RadDockZone3" > </telerik:RadDockZone> </div> </td> </tr> </table> </telerik:RadDockLayout> </asp:Panel><asp:Panel ID="Panel2" runat="server" CssClass="customizePanel"> <a name="customizepage"></a> <div class="movable"> <div class="draggable"><h2>Customize</h2></div> <div class="block"> <div> <p> <%= vboxTitles.getTitle("Add and remove your preferred topics", Request.QueryString["language"])%></p><asp:CheckBoxList ID="CheckBoxList1" runat="server" Enabled="false"RepeatLayout="UnorderedList"></asp:CheckBoxList> <asp:DropDownList ID="DropDownZone" runat="server" DataSource="<%#GetZones() %>"DataTextField="ID" DataValueField="ClientID" Width="150" Visible="false" ></asp:DropDownList><br /><br /><telerik:RadButton ID="ButtonAddDock" runat="server" OnClick="ButtonAddDock_Click" Text="Save"> <Icon PrimaryIconCssClass="rbOk" PrimaryIconLeft="4" PrimaryIconTop="4" /> </telerik:RadButton><asp:Button runat="server" CssClass="button" ID="ButtonPostBack" Text="Reset"OnClick="ButtonPostBack_Click" /> <div class="clear"></div> </div> </div> <div class="block-bottoml"> <div class="block-bottomr"></div> </div> </div></asp:Panel> <br /> </div> <telerik:RadAjaxManager ID="RadAjaxManagerArrange" runat="server" ClientEvents-OnRequestStart="RequestStart" ClientEvents-OnResponseEnd="ResponseEnd"><AjaxSettings> <telerik:AjaxSetting AjaxControlID="ButtonAddDocks" EventName="Click"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="Panel1" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings></telerik:RadAjaxManager> <telerik:RadAjaxLoadingPanel ID="LoadingPanel1" runat="server" MinDisplayTime="500" Skin="Default"> </telerik:RadAjaxLoadingPanel>please help with sample project on how to get this working
thank you