or
| using System; |
| using System.Collections; |
| using System.Collections.Generic; |
| using System.ComponentModel; |
| using System.Data; |
| using System.Drawing; |
| using System.Linq; |
| using System.Web; |
| using System.Web.SessionState; |
| using System.Web.UI; |
| using System.Web.Security; |
| using System.Web.UI.WebControls; |
| using System.Web.UI.HtmlControls; |
| using System.Web.Script.Serialization; |
| using Telerik.Web.UI; |
| public partial class dashboard : System.Web.UI.Page |
| { |
| insidefbDataContext db = new insidefbDataContext(); |
| string cacheKey = "UserPreferences.PortalSession." + HttpContext.Current.User.Identity.Name.ToString(); |
| private List<DockState> CurrentDockStates |
| { |
| get |
| { |
| List<DockState> _currentDockStates = (List<DockState>)Cache[cacheKey]; |
| if (Object.Equals(_currentDockStates, null)) |
| { |
| //Make an empty configuration list |
| _currentDockStates = new List<DockState>(); |
| //string strLoadedConfig = GetUserPreference("PortalConfiguration"); |
| aspnetdbDataContext aspnetDB = new aspnetdbDataContext(); |
| var dashboardItems = (from x in aspnetDB.aspnet_Users |
| select x).SingleOrDefault(c => c.UserName.Equals(User.Identity.Name.ToString())).dashboardItems; |
| //If we found nothing, leave the current state empty |
| if (!string.IsNullOrEmpty(dashboardItems)) |
| { |
| string strLoadedConfig = dashboardItems.ToString(); |
| try |
| { |
| //Use the stored config |
| //Convert the stored config to an array, splitting at the *s |
| string[] aConfig = strLoadedConfig.Split('*'); |
| DockState dsWorking = default(DockState); |
| //Parse through the array, turning the dockstate strings into dockstates |
| //Then add the dockstates to the dockstate list |
| foreach (var strConfigItem in aConfig) |
| { |
| //Start a fresh dockstate |
| dsWorking = new DockState(); |
| //Parse the string back into dock settings |
| dsWorking = DockState.Deserialize(strConfigItem); |
| //Add the settings back into the current session |
| _currentDockStates.Add(dsWorking); |
| } |
| } |
| catch (Exception ex) |
| { |
| } |
| Cache[cacheKey] = _currentDockStates; |
| } |
| } |
| return _currentDockStates; |
| } |
| set |
| { |
| Cache[cacheKey] = value; |
| System.Text.StringBuilder sbListConverter = new System.Text.StringBuilder(); |
| foreach (DockState dockState in value) |
| { |
| sbListConverter.AppendFormat("{0}*", dockState.ToString()); |
| } |
| string strDockConfig = sbListConverter.ToString().TrimEnd(Convert.ToChar("*")); |
| aspnetdbDataContext aspnetDB = new aspnetdbDataContext(); |
| aspnet_User activeUser = (from x in aspnetDB.aspnet_Users |
| select x).SingleOrDefault(c => c.UserName.Equals(User.Identity.Name.ToString())); |
| activeUser.dashboardItems = strDockConfig; |
| aspnetDB.SubmitChanges(); |
| } |
| } |
| protected void Page_Load(object sender, EventArgs e) |
| { |
| if (!IsPostBack) |
| { |
| LoadControlsCheckbox(); |
| } |
| } |
| protected void LoadControlsCheckbox() |
| { |
| IFBF.AspNet.Membership.IFBFMembership xEntity = new IFBF.AspNet.Membership.IFBFMembership(); |
| int entityid = xEntity.getEntityid(HttpContext.Current.User.Identity.Name); |
| t_countysecurity userCounty = (from z in db.t_countysecurities |
| where z.c_entityid.Equals(entityid) |
| select z).FirstOrDefault<t_countysecurity>(); |
| //if (userCounty != null) |
| if (true) |
| { |
| cbxWebParts.Items.Clear(); |
| ListItem itAlerts = new ListItem(); |
| itAlerts.Text = "Alerts"; |
| itAlerts.Value = "~/members/UserControls/Dashboard/Alerts.ascx"; |
| cbxWebParts.Items.Add(itAlerts); |
| ListItem itTask = new ListItem(); |
| itTask.Text = "Tasks"; |
| itTask.Value = "~/members/UserControls/Dashboard/Task.ascx"; |
| cbxWebParts.Items.Add(itTask); |
| ListItem itReports = new ListItem(); |
| itReports.Text = "Reports"; |
| itReports.Value = "~/members/UserControls/Dashboard/Reports.ascx"; |
| cbxWebParts.Items.Add(itReports); |
| } |
| ListItem itQuotes = new ListItem(); |
| itQuotes.Text = "Quotes"; |
| itQuotes.Value = "~/members/UserControls/Dashboard/Quotes.ascx"; |
| cbxWebParts.Items.Add(itQuotes); |
| ListItem itWeather = new ListItem(); |
| itWeather.Text = "Weather"; |
| itWeather.Value = "~/members/UserControls/Dashboard/Weather.ascx"; |
| cbxWebParts.Items.Add(itWeather); |
| } |
| public ArrayList GetZones() |
| { |
| ArrayList zones = new ArrayList(); |
| zones.Add(RadDockZone1); |
| zones.Add(RadDockZone2); |
| 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); |
| } |
| } |
| } |
| 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. |
| foreach (DockState state in CurrentDockStates) |
| { |
| e.Positions[state.UniqueName] = state.DockZoneID; |
| e.Indices[state.UniqueName] = state.Index; |
| } |
| } |
| protected void RadDockLayout1_SaveDockLayout(object sender, DockLayoutEventArgs e) |
| { |
| //Save the dock state in the session. This will enable us |
| // to recreate the dock in the next Page_Init. |
| CurrentDockStates = RadDockLayout1.GetRegisteredDocksState(); |
| } |
| private RadDock CreateRadDockFromState(DockState state) |
| { |
| RadDock dock = new RadDock(); |
| dock.ID = string.Format("RadDock{0}", state.UniqueName); |
| dock.ApplyState(state); |
| dock.SkinID = "Office2007"; |
| dock.Command += new DockCommandEventHandler(dock_Command); |
| dock.Commands.Add(new DockCloseCommand()); |
| dock.Commands.Add(new DockExpandCollapseCommand()); |
| return dock; |
| } |
| private RadDock CreateRadDock(string title) |
| { |
| int docksCount = CurrentDockStates.Count; |
| RadDock dock = new RadDock(); |
| dock.UniqueName = Guid.NewGuid().ToString(); |
| dock.ID = string.Format("RadDock{0}", dock.UniqueName); |
| dock.Title = title; |
| dock.Text = string.Format("Added at {0}", DateTime.Now); |
| dock.Width = Unit.Pixel(300); |
| dock.Commands.Add(new DockCloseCommand()); |
| dock.Commands.Add(new DockExpandCollapseCommand()); |
| dock.Command += new DockCommandEventHandler(dock_Command); |
| 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); |
| } |
| } |
| 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 = 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); |
| } |
| 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) |
| { |
| foreach (ListItem li in cbxWebParts.Items) |
| { |
| if (li.Selected) |
| { |
| RadDock dock = CreateRadDock(li.Text); |
| UpdatePanel1.ContentTemplateContainer.Controls.Add(dock); |
| ScriptManager.RegisterStartupScript( |
| dock, |
| this.GetType(), |
| "AddDock" + dock.ClientID, |
| 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, chooseZone()), |
| true); |
| string blarg = chooseZone(); |
| CreateSaveStateTrigger(dock); |
| //Load the selected widget in the RadDock control |
| dock.Tag = li.Value; |
| //dock.Title = DroptDownWidget.SelectedItem.Text; |
| LoadWidget(dock); |
| } |
| } |
| selectModule_MPE.Hide(); |
| } |
| protected string chooseZone() |
| { |
| int zoneOne = RadDockZone1.Docks.Count(); |
| int zoneTwo = RadDockZone2.Docks.Count(); |
| if (zoneOne > zoneTwo) |
| { return "ctl00_ctl00_masterContent_mainContent_RadDockZone2"; } |
| else |
| { return "ctl00_ctl00_masterContent_mainContent_RadDockZone1"; } |
| } |
| } |
| <%@ Page Language="C#" MasterPageFile="~/resources/masterPages/insideFB_Members.master" Theme="insideFB" AutoEventWireup="true" CodeFile="dashboard.aspx.cs" Inherits="dashboard" Title="Dashboard" %> |
| <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit"%> |
| <%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %> |
| <asp:Content ID="Content1" ContentPlaceHolderID="mainContent" Runat="Server"> |
| <div ID="pnlOpen" runat="server" class="modalPopup" style="display:none;"> |
| <div style="width:500px;" id="searchDIV"> |
| <div class="modalHeader" style="text-align:right;"> |
| <asp:LinkButton ID="closeSearch" runat="server" Text="Close Window" ForeColor="White"></asp:LinkButton> |
| |
| </div> |
| </div> |
| <div style="width:500px;" id="OpenDIV"> |
| <asp:CheckBoxList ID="cbxWebParts" runat="server"> |
| </asp:CheckBoxList> |
| <br /> |
| <asp:button runat="server" CssClass="button" id="ButtonAddDock" text="Add Dock" onclick="ButtonAddDock_Click" /> |
| </div> |
| </div> |
| <ajaxToolkit:ModalPopupExtender ID="selectModule_MPE" runat="server" |
| TargetControlID="imAdd" |
| PopupControlID="pnlOpen" |
| BackgroundCssClass="modalBackground" |
| CancelControlID="closeSearch" OkControlID="closeSearch" |
| /> |
| <asp:ImageButton ID="imAdd" runat="server" |
| ImageUrl="~/resources/styles/graphics/addItem.gif" /> |
| <asp:ImageButton ID="imReset" runat="server" Visible="false" |
| ImageUrl="~/resources/styles/graphics/resetToDefault.gif" /> |
| <br/> |
| <telerik:raddocklayout runat="server" id="RadDockLayout1" |
| onsavedocklayout="RadDockLayout1_SaveDockLayout" |
| onloaddocklayout="RadDockLayout1_LoadDockLayout"> |
| <telerik:raddockzone runat="server" id="RadDockZone1" SkinID="Office2007" width="445" MinHeight="200" style="float:left;margin-right:15px;background: #f5f4e8;"> |
| </telerik:raddockzone> |
| <telerik:raddockzone runat="server" id="RadDockZone2" SkinID="Office2007" width="445" MinHeight="200" style="background: #f5f4e8;float:left;"> |
| </telerik:raddockzone> |
| <div style="display:none"> |
| Hidden UpdatePanel, which is used to receive the new dock controls. |
| We will move them with script to the desired initial dock zone. |
| <asp:updatepanel runat="server" id="UpdatePanel1"> |
| <triggers> |
| <asp:asyncpostbacktrigger controlid="ButtonAddDock" eventname="Click" /> |
| </triggers> |
| </asp:updatepanel> |
| </div> |
| </telerik:raddocklayout> |
| </asp:Content> |
| <telerik:RadDatePicker ID="dpDate1" runat="server" Skin="Office2007" Culture="English (United States)" Width="200px" AutoPostBack="True" OnSelectedDateChanged="dpDate1_SelectedDateChanged" > |
| <DateInput LabelCssClass="riLabel radLabelCss_Office2007" Skin="Office2007" Width="" AutoPostBack="True" > |
| </DateInput> |
| <DatePopupButton CssClass="radPopupImage_Outlook" HoverImageUrl="~/Images/DatePicker.png" |
| ImageUrl="~/Images/DatePicker.png" /> |
| <Calendar Skin="Office2007" UseColumnHeadersAsSelectors="False" UseRowHeadersAsSelectors="False" |
| ViewSelectorText="x" RangeMinDate='<%#DateTime.Now %>'> |
| </Calendar> |
| </telerik:RadDatePicker> |
Hi,
I have one Telerik grid and one button on my page. Clicking on button I want to add one row in grid and row will have combobox, textbox etc controls. Users can click multiple times on button and on every click I want to add extra row with controls in grid. And I also want to capture events of these dynamic loaded controls.
Please provide me the code to add new row in grid with other requirements.
Thanks.