Hi,
When i removing dock command direct like "dock.commands.remove(0)" than it will remove 0th index command, but when i will put this remove statement in loop it will not work properly.
Thanks,
Jayesh Goyani
When i removing dock command direct like "dock.commands.remove(0)" than it will remove 0th index command, but when i will put this remove statement in loop it will not work properly.
CREATE TABLE [dbo].[Widgets]( [WidgetsID] [int] IDENTITY(1,1) NOT NULL, [WidgetsName] [nvarchar](max) NOT NULL, [WidgetsUrl] [nvarchar](max) NULL, [Description] [nvarchar](max) NULL, [StatusID] [int] NOT NULL, [CreatedByID] [int] NOT NULL, [CreatedByDate] [datetime] NOT NULL, [ModifiedByID] [int] NULL, [ModifiedByDate] [datetime] NULL, CONSTRAINT [PK_Widgets] PRIMARY KEY CLUSTERED ( [WidgetsID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ----------------------------------------------------------- CREATE TABLE [dbo].[WidgetsPersonalized]( [WidgetsPersonalizedID] [int] IDENTITY(1,1) NOT NULL, [EmpNo] [int] NOT NULL, [WidgetsID] [nvarchar](50) NULL, [DockString] [nvarchar](max) NULL, [StatusID] [int] NOT NULL, [CreatedByID] [int] NOT NULL, [CreatedByDate] [datetime] NOT NULL, [ModifiedByID] [int] NULL, [ModifiedByDate] [datetime] NULL, CONSTRAINT [PK_WidgetsPersonalized] PRIMARY KEY CLUSTERED ( [WidgetsPersonalizedID] ASC, [EmpNo] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO -------------------------------------------------- -- exec usp_DeleteWidgets 1,'Branch Status','' CREATE Procedure [dbo].[usp_DeleteWidgets] ( @EmpNo as int, @DockTitle as nvarchar(MAX), @ReturnVal int output) asBegin set @ReturnVal = 0 declare @temptable TABLE (items varchar(8000)) declare @Delimiter char(1) set @Delimiter = ',' Declare @WidgetsID as varchar(20) Declare @WidgetsList as varchar(MAX) Declare @NewWidgetsList as varchar(MAX) Declare @MaxRecordExist as int -- get WidgetsID from Widgets using WidgetsName set @WidgetsID = (select cast(WidgetsID as varchar(20))as WidgetsID from Widgets where upper(ltrim(rtrim(WidgetsName))) = upper(ltrim(rtrim(@DockTitle)))) -- Get List of Existing Widgets for perticuler employee set @WidgetsList = (select WidgetsID from WidgetsPersonalized where EmpNo = @EmpNo) -- Split Existing Widgets list and insert it into TempTable. insert into @temptable (Items) select Items from dbo.Split(@WidgetsList,@Delimiter) -- Check if Only one record exist for the user than delete the record. -- else Update the exist widgets list. set @MaxRecordExist = (Select Count(*) from @temptable) print @MaxRecordExist if(@MaxRecordExist = 1) Begin delete from WidgetsPersonalized where EmpNo = @EmpNo set @ReturnVal = 1 End else Begin select @NewWidgetsList = COALESCE(@NewWidgetsList + @Delimiter,'') + Items from @temptable where not (charIndex(',' + rtrim(cast(Items as nvarchar(max))) + ',',',' + isnull(@WidgetsID,-1) +',') >0 ) print @NewWidgetsList update WidgetsPersonalized set WidgetsID = isnull(@NewWidgetsList,WidgetsID)where EmpNo = @EmpNo set @ReturnVal = 1 End End GO ------------------------------ CREATE Procedure [dbo].[usp_InsertWidgetsPersonalized] ( @WidgetsPersonalizedID int, @EmpNo int, @WidgetsID nvarchar(50), @DockString nvarchar(MAX), @StatusID int, @CreatedByID int, @ReturnVal int output ) as Begin set @ReturnVal = 0 select @WidgetsPersonalizedID = WidgetsPersonalizedID from WidgetsPersonalized where EmpNo = @EmpNo --if(@WidgetsID is not null) --Begin if(@WidgetsPersonalizedID > 0) Begin Declare @WidgetsIDExist int select @WidgetsIDExist = Count(*) from dbo.Split((select WidgetsID from WidgetsPersonalized where EmpNo = @EmpNo),',') where Items = @WidgetsID Update WidgetsPersonalized set WidgetsID =case when @WidgetsID is not null and @WidgetsIDExist = 0 then (ltrim(rtrim(WidgetsID))+','+@WidgetsID) else ltrim(rtrim(WidgetsID)) end, DockString = isnull(@DockString,DockString), StatusID = isnull(@StatusID,StatusID), ModifiedByID = isnull(@CreatedByID,ModifiedByID), ModifiedByDate = getdate() where EmpNo = @EmpNo set @ReturnVal = 1 End else Begin if(@WidgetsID is not null) Begin Insert into WidgetsPersonalized (EmpNo,WidgetsID,DockString,StatusID, CreatedByID,CreatedByDate,ModifiedByID,ModifiedByDate) values(@EmpNo, @WidgetsID, @DockString, @StatusID, @CreatedByID,GetDate(),@CreatedByID,GetDate()) set @ReturnVal = 1 End End --End EndGO ---------------------------------- -- exec usp_SelectWidgets 1,null CREATE procedure [dbo].[usp_SelectWidgets] ( @EmpNo int, @StatusID int) asBegin Declare @WidgetsID as varchar(20) select @WidgetsID = WidgetsID from WidgetsPersonalized where EmpNo = @EmpNo select WidgetsID,WidgetsName,WidgetsUrl,[Description],StatusID,CreatedByID, CreatedByDate,ModifiedByID,ModifiedByDate from Widgets where StatusID = isnull(@StatusID,StatusID) and not (charIndex(',' + rtrim(cast(WidgetsID as nvarchar(max))) + ',',',' + isnull(@WidgetsID,-1) +',') >0 ) End GO ------------------------------------ -- exec usp_SelectWidgetsPersonalized null CREATE procedure [dbo].[usp_SelectWidgetsPersonalized] ( @EmpNo int, @StatusID int) asBegin select WidgetsPersonalizedID,EmpNo,WidgetsID,DockString,StatusID,CreatedByID, CreatedByDate,ModifiedByID,ModifiedByDate from WidgetsPersonalized where StatusID = isnull(@StatusID,StatusID) and EmpNo = isnull(@EmpNo,EmpNo) EndGO ---------------------------------------- <%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %> <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="Server"> <telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="lnkBtnAddWidgets"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="dlDashBoard" LoadingPanelID="radloadingpanal" /> <telerik:AjaxUpdatedControl ControlID="ddlWidgets" /> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="lnkBtnClose"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="dlDashBoard" LoadingPanelID="radloadingpanal" /> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="dlDashBoard"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="dlDashBoard" LoadingPanelID="radloadingpanal" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManagerProxy> <%-- <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server"> <script language="javascript" type="text/javascript"> function ImgChange(ControlID, TitleContent) { $("#" + TitleContent).slideToggle(500); if (ControlID.className == "collapsibleUP") { ControlID.setAttribute("class", "collapsibleDown"); } else { ControlID.setAttribute("class", "collapsibleUP"); } } </script> </telerik:RadScriptBlock>--%> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="Server"> <table cellpadding="0" cellspacing="2" border="0" style="width: 100%"> <tr> <td align="right"> <asp:LinkButton ID="lnkBtnPersonalizePage" runat="server" Text="Personalize this page My page" class="collapsibleDown" OnClick="lnkBtnPersonalizePage_Click"></asp:LinkButton> <asp:Panel ID="pnlAddWidgets" runat="server" Visible="false"> <table cellpadding="0" cellspacing="2" border="0"> <tr valign="middle" align="right"> <td> <telerik:RadComboBox ID="ddlWidgets" runat="server" DataTextField="WidgetsName" DataValueField="WidgetsID"> </telerik:RadComboBox> </td> <td> <telerik:RadComboBox ID="ddlPosition" runat="server"> <Items> <telerik:RadComboBoxItem Selected="true" Text="Select Position" Value="-1" /> <telerik:RadComboBoxItem Text="Top" Value="TOP" /> <telerik:RadComboBoxItem Text="Right" Value="RIGHT" /> <telerik:RadComboBoxItem Text="Left" Value="LEFT" /> </Items> </telerik:RadComboBox> </td> <td align="right" rowspan="2"> <asp:LinkButton ID="lnkBtnAddWidgets" runat="server" Text="Add" CssClass="IconAdd" OnClick="lnkBtnAddWidgets_Click"></asp:LinkButton> </td> <td align="right" rowspan="2"> <asp:LinkButton ID="lnkBtnClose" runat="server" Text="Close" CssClass="IconBack" OnClick="lnkBtnClose_Click"></asp:LinkButton> </td> </tr> </table> </asp:Panel> </td> </tr> </table> <%-- <tr> <td align="center" valign="top">--%> <telerik:RadDockLayout ID="dlDashBoard" runat="server" OnLoadDockLayout="dlDashBoard_LoadDockLayout" OnSaveDockLayout="dlDashBoard_SaveDockLayout"> <table cellpadding="4" cellspacing="4" style="width: 100%" border="0"> <tr valign="top"> <td colspan="2"> <telerik:RadDockZone ID="dzTop" runat="server" Width="100%" Height="100%" BorderStyle="None"> </telerik:RadDockZone> </td> </tr> <tr valign="top"> <td style="width: 50%"> <telerik:RadDockZone ID="dzLeft" runat="server" Width="100%" Height="100%" BorderStyle="None"> </telerik:RadDockZone> </td> <td style="width: 50%"> <telerik:RadDockZone ID="dzRight" runat="server" Width="100%" Height="100%" BorderStyle="None"> </telerik:RadDockZone> </td> </tr> </table> <div style="display: none"> <asp:UpdatePanel runat="server" ID="UpdatePanel1"> <Triggers> <asp:AsyncPostBackTrigger ControlID="lnkBtnAddWidgets" EventName="Click" /> </Triggers> </asp:UpdatePanel> </div> </telerik:RadDockLayout> <%-- </td> </tr>--%> </asp:Content> using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Test.Domain; using Test.DataModel; using Telerik.Web.UI; using System.Text; using System.Drawing; public partial class Default : System.Web.UI.Page { public static List<usp_SelectWidgetsResult> lstWidgets; public static int intEmpNo = 1; private string _NewWidgetID; public string NewWidgetID { get { return _NewWidgetID != null ? _NewWidgetID : null; } set { _NewWidgetID = value; } } private bool _IsDeleted; public bool IsDeleted { get { return _IsDeleted; } set { _IsDeleted = value; } //get { return ViewState["NewWidgetID"] != null ? ViewState["NewWidgetID"].ToString() : null; } //set { ViewState["NewWidgetID"] = value; } } private int _count = 0; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { intEmpNo = 1; BindDropDown(); SetDockZoneStyle(true, Color.Gray, BorderStyle.None); } } protected void Page_Init(object sender, EventArgs e) { string dockState = ""; lstWidgets = new DashboardDO().SelectWidgets(null, null); List<usp_SelectWidgetsPersonalizedResult> WPList = new DashboardDO().SelectWidgetsPersonalized(intEmpNo, null); if (WPList.Count > 0) { dockState = WPList[0].DockString; } string[] currentDockStates = dockState.Split('|'); _count = currentDockStates.Length; //Recreate the docks in order to ensure their proper operation for (int i = 0; i < _count; i++) { if (currentDockStates[i].Trim() != string.Empty) { RadDock dock = CreateRadDockFromState(currentDockStates[i]); dock.EnableAnimation = true; if (lstWidgets.Where(w => w.WidgetsName.Trim().ToUpper() == dock.Title.Trim().ToUpper()).ToList().Count > 0) { dock.ContentContainer.Controls.Add(LoadControl(lstWidgets.Where(w => w.WidgetsName.Trim().ToUpper() == dock.Title.Trim().ToUpper()).ToList()[0].WidgetsUrl)); } dlDashBoard.Controls.Add(dock); CreateSaveStateTrigger(dock); } } } private void BindDropDown() { //if (lstWidgets.Count < 1) //{ lstWidgets = new DashboardDO().SelectWidgets(intEmpNo, null); //} ddlWidgets.Items.Clear(); ddlWidgets.DataSource = lstWidgets; ddlWidgets.DataBind(); ddlWidgets.Items.Add(new RadComboBoxItem("Select Widget", "-1")); ddlWidgets.SelectedValue = "-1"; } private RadDock CreateRadDockFromState(string stringState) { System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); DockState state = serializer.Deserialize<DockState>(stringState); RadDock dock = new RadDock(); dock.ID = string.Format("RadDock{0}", state.UniqueName); dock.ApplyState(state); dock.EnableAnimation = true; dock.Command += new DockCommandEventHandler(dock_Command); dock.Commands.Add(new DockCloseCommand()); dock.Commands.Add(new DockExpandCollapseCommand()); return dock; } private void CreateSaveStateTrigger(RadDock dock) { dock.AutoPostBack = true; dock.CommandsAutoPostBack = true; AsyncPostBackTrigger saveStateTrigger = new AsyncPostBackTrigger(); saveStateTrigger.ControlID = dock.ID; saveStateTrigger.EventName = "DockPositionChanged"; UpdatePanel1.Triggers.Add(saveStateTrigger); saveStateTrigger = new AsyncPostBackTrigger(); saveStateTrigger.ControlID = dock.ID; saveStateTrigger.EventName = "Command"; UpdatePanel1.Triggers.Add(saveStateTrigger); } 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); int val = new DashboardDO().DeleteWidgets(intEmpNo, ((RadDock)sender).Title.Trim()); IsDeleted = true; CommonFunctions.DeleteMessage(this.Page, val, ((RadDock)sender).Title); } } protected void lnkBtnAddWidgets_Click(object sender, EventArgs e) { if (ddlWidgets.SelectedValue != "-1") { RadDock dock = CreateRadDock(); UpdatePanel1.ContentTemplateContainer.Controls.Add(dock); NewWidgetID = ddlWidgets.SelectedValue; switch (ddlPosition.SelectedValue.ToUpper()) { case "TOP": ScriptManager.RegisterStartupScript( dock, this.GetType(), "AddDock", string.Format(@"function _addDock() {{ Sys.Application.remove_load(_addDock); $find('{1}').dock($find('{0}')); $find('{0}').doPostBack('DockPositionChanged'); }}; Sys.Application.add_load(_addDock);", dock.ClientID, dzTop.ClientID), true); break; case "LEFT": ScriptManager.RegisterStartupScript( dock, this.GetType(), "AddDock", string.Format(@"function _addDock() {{ Sys.Application.remove_load(_addDock); $find('{1}').dock($find('{0}')); $find('{0}').doPostBack('DockPositionChanged'); }}; Sys.Application.add_load(_addDock);", dock.ClientID, dzLeft.ClientID), true); break; case "RIGHT": ScriptManager.RegisterStartupScript( dock, this.GetType(), "AddDock", string.Format(@"function _addDock() {{ Sys.Application.remove_load(_addDock); $find('{1}').dock($find('{0}')); $find('{0}').doPostBack('DockPositionChanged'); }}; Sys.Application.add_load(_addDock);", dock.ClientID, dzRight.ClientID), true); break; } CreateSaveStateTrigger(dock); } } private RadDock CreateRadDock() { RadDock dock = new RadDock(); string WidgetsURL = lstWidgets.Where(w => w.WidgetsID == Convert.ToInt32(ddlWidgets.SelectedValue)).ToList()[0].WidgetsUrl; dock.UniqueName = Guid.NewGuid().ToString(); dock.ID = string.Format("RadDock{0}", dock.UniqueName); dock.Title = lstWidgets.Where(w => w.WidgetsID == Convert.ToInt32(ddlWidgets.SelectedValue)).ToList()[0].WidgetsName; dock.Width = Unit.Pixel(300); dock.EnableAnimation = true; dock.Commands.Add(new DockCloseCommand()); dock.Commands.Add(new DockExpandCollapseCommand()); dock.Command += new DockCommandEventHandler(dock_Command); dock.ContentContainer.Controls.Add(LoadControl(WidgetsURL)); return dock; } protected void dlDashBoard_SaveDockLayout(object sender, DockLayoutEventArgs e) { string dockState; System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); List<DockState> stateList = dlDashBoard.GetRegisteredDocksState(); StringBuilder serializedList = new StringBuilder(); int i = 0; while (i < stateList.Count) { if (stateList[i].Closed == false) { serializedList.Append(serializer.Serialize(stateList[i])); serializedList.Append("|"); } i++; } dockState = serializedList.ToString(); try { usp_SelectWidgetsPersonalizedResult WP = new usp_SelectWidgetsPersonalizedResult(); WP.EmpNo = intEmpNo; if (NewWidgetID != null) { WP.WidgetsID = NewWidgetID; } WP.DockString = dockState; if (IsDeleted == false) { int val = new DashboardDO().InsertWidgetsPersonalized(WP); if (val == 1) { NewWidgetID = null; BindDropDown(); ddlWidgets.SelectedValue = "-1"; } } } catch { } } protected void dlDashBoard_LoadDockLayout(object sender, DockLayoutEventArgs e) { System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); //Get saved state string from the database - set it to dockState variable for example string dockState = ""; try { List<usp_SelectWidgetsPersonalizedResult> WPList = new DashboardDO().SelectWidgetsPersonalized(intEmpNo, null); if (WPList.Count > 0) { dockState = WPList[0].DockString; } } catch { } string[] currentDockStates = dockState.Split('|'); foreach (string stringState in currentDockStates) { if (stringState.Trim() != string.Empty) { DockState state = serializer.Deserialize<DockState>(stringState); e.Positions[state.UniqueName] = state.DockZoneID; e.Indices[state.UniqueName] = state.Index; } } } protected void lnkBtnPersonalizePage_Click(object sender, EventArgs e) { SetDockZoneStyle(false, Color.Gray, BorderStyle.Dashed); } protected void lnkBtnClose_Click(object sender, EventArgs e) { SetDockZoneStyle(true, Color.Gray, BorderStyle.None); } private void SetDockZoneStyle(bool IsVisible, Color dzBorderColor, BorderStyle dzBorderStyle) { if (IsVisible == false) { lnkBtnPersonalizePage.Visible = false; pnlAddWidgets.Visible = true; if (dlDashBoard.GetRegisteredDocksState().Count > 0) { int i = 0; while (i < dlDashBoard.GetRegisteredDocksState().Count) { if (dlDashBoard.RegisteredDocks[i].Commands.Count == 0) { dlDashBoard.RegisteredDocks[i].Command += new DockCommandEventHandler(dock_Command); dlDashBoard.RegisteredDocks[i].Commands.Add(new DockCloseCommand()); dlDashBoard.RegisteredDocks[i].Commands.Add(new DockExpandCollapseCommand()); } dlDashBoard.RegisteredDocks[i].Pinned = false; i++; } } } else { lnkBtnPersonalizePage.Visible = true; pnlAddWidgets.Visible = false; if (dlDashBoard.GetRegisteredDocksState().Count > 0) { int i = 0; //dlDashBoard.RegisteredDocks[i].Commands.RemoveAt(0); //dlDashBoard.RegisteredDocks[i].Commands.RemoveAt(0); while (i < dlDashBoard.GetRegisteredDocksState().Count) { int k = dlDashBoard.RegisteredDocks[i].Commands.Count - 1; //for (int j = k; j >= 0; j--) //{ dlDashBoard.RegisteredDocks[i].Commands.RemoveAt(0); // dlDashBoard.RegisteredDocks[i].Commands.RemoveAt(0); //} //dlDashBoard.RegisteredDocks[i].Commands.RemoveAt(0); if (dlDashBoard.RegisteredDocks[i].Commands.Count > 0) { // dlDashBoard.RegisteredDocks[i].Commands.RemoveAt(0); //int k = dlDashBoard.RegisteredDocks[i].Commands.Count - 1; //for (int j = k; j >= 0; j--) //{ // dlDashBoard.RegisteredDocks[i].Commands.RemoveAt(j); //} // dlDashBoard.RegisteredDocks[i].Commands.RemoveAll(w => w.Name == "Close"); // dlDashBoard.RegisteredDocks[i].Commands.RemoveAll(w => w.Name == "ExpandCollapse"); //dlDashBoard.RegisteredDocks[i].Commands.RemoveRange(0, dlDashBoard.RegisteredDocks[i].Commands.Count); //dlDashBoard.RegisteredDocks[i].Commands.RemoveAt(0); //dlDashBoard.RegisteredDocks[i].Commands.RemoveRange(0, dlDashBoard.RegisteredDocks[i].Commands.Count); //int j = 0; //while (j < dlDashBoard.RegisteredDocks[i].Commands.Count) //{ // DockCommand item = new DockCommand(); // item = new DockCloseCommand(); // dlDashBoard.RegisteredDocks[i].Commands.RemoveRange(0,dlDashBoard.RegisteredDocks[i].Commands.Count-1); // j++; //} } dlDashBoard.RegisteredDocks[i].Pinned = true; i++; } } } dzTop.BorderColor = dzBorderColor; dzTop.BorderStyle = dzBorderStyle; dzLeft.BorderColor = dzBorderColor; dzLeft.BorderStyle = dzBorderStyle; dzRight.BorderColor = dzBorderColor; dzRight.BorderStyle = dzBorderStyle; } }Thanks,
Jayesh Goyani