or
private List<xItems> GetTreeListChanges() { List<xItems> xItems = new List<xItems>(); foreach(TreeListDataItem rtlItem in rtlxItems.Items) { string xItemsId = Convert.ToString(rtlItem.GetDataKeyValue("xItemsId")); }
[...]
}<telerik:RadTreeList ID="rtlxItems" runat="server" AllowMultiItemEdit="false" ParentDataKeyNames="ParentId" DataKeyNames="ChlidId" ClientDataKeyNames="xItemsId">TreeListDataItem ?
private RadPanelBar PreparePanelBar() { RadPanelBar objRadPanelBar = new RadPanelBar(); objRadPanelBar.ID = Guid.NewGuid().ToString(); objRadPanelBar.Skin = "PanelbarDup"; //This point to my app_themes and from there it ref. to custom skin library objRadPanelBar.EnableEmbeddedSkins = false; objRadPanelBar.Width = Unit.Percentage(100); objRadPanelBar.ExpandMode = PanelBarExpandMode.MultipleExpandedItems; return objRadPanelBar; } private RadPanelItem PrepareRadPanelItem(string _rpbCaption,bool isExpanded) { //Prepare RadPanelItem under passed RadPanelBar RadPanelItem objRadPanelItem = new RadPanelItem(); objRadPanelItem.Text = _rpbCaption; objRadPanelItem.Expanded = isExpanded; return objRadPanelItem; } protected void btnOk_Click(object sender, EventArgs e) { //Prepare Tab RadPanelBar objPanelbar = PreparePanelBar(); //Prepare Sections RadPanelItem objPanelItem = PrepareRadPanelItem("Basic Information", true); //Prepare Dynamic HTML Table under Section objPanelbar.Items.Add(objPanelItem); // Add the table to the placeholder control ContentPlaceHolder.Controls.Add(objPanelbar); }<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="LeftMenuAndContent.ascx.cs" Inherits="Elearning.Usecases.UserControl.LeftMenuAndContent" %><div class="sheet"> <div class="sheet-body"> <div class="content-layout"> <div class="content-layout-row"> <div class="layout-cell sidebar1"> <div class="vmenublock"> <div class="vmenublock-body"> <div class="vmenublockcontent"> <div class="vmenublockcontent-body"> <asp:Repeater ID="repLeftMenu" runat="server"> <ItemTemplate> <li runat="server" id="ListItem"> <asp:LinkButton ID="lnkNavigate" runat="server" CausesValidation="false"> <span class="l"></span><span class="r"></span><span class="t"> <asp:Literal runat="server" ID="litText"></asp:Literal> </span> </asp:LinkButton> </li> </ItemTemplate> <HeaderTemplate> <ul class="vmenu"> </HeaderTemplate> <FooterTemplate> </ul> </FooterTemplate> </asp:Repeater> <div class="cleared"> </div> </div> </div> <div class="cleared"> </div> </div> </div> <div class="cleared"> </div> </div> <div class="layout-cell content"> <div class="post"> <h1> <asp:Literal runat="server" ID="litTitleContent"></asp:Literal> </h1> <asp:PlaceHolder ID="plhContent" EnableViewState="False" runat="Server" /> </div> <div class="cleared"> </div> </div> </div> </div> <div class="cleared"> </div> <div class="cleared"> </div> </div></div>using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using CSCR.Hermes.Controllers;using Elearning.UserInterfaceLayer;namespace Elearning.Usecases.UserControl{ public partial class LeftMenuAndContent : BaseUserControl { private Control contentControl; /// <summary> /// Get and set name of active usecase /// </summary> string ActiveLeftMenu { get { return (string)ViewState["ActiveLeftMenu"]; } set { ViewState["ActiveLeftMenu"] = value; } //get { return _activeLeftMenu; } //set { _activeLeftMenu = value; } } private string _activeLeftMenu = string.Empty; protected override void OnLoad(EventArgs e) { base.OnLoad(e); var hermes = GetHermesControl(); if (hermes.Parameters != null && hermes.Parameters[ElearningCommon.PropertyKeys.LessonID] != null) LessonId = Convert.ToInt32(hermes.Parameters[ElearningCommon.PropertyKeys.LessonID]); if (hermes.Parameters != null && hermes.Parameters[ElearningCommon.PropertyKeys.ExamID] != null) ExamID = Convert.ToInt32(hermes.Parameters[ElearningCommon.PropertyKeys.ExamID]); if (hermes.Parameters != null && hermes.Parameters[ElearningCommon.PropertyKeys.ActiveItemLeftMenu] != null) ActiveLeftMenu = hermes.Parameters[ElearningCommon.PropertyKeys.ActiveItemLeftMenu]; repLeftMenu.DataSource = GetMenuItems(); repLeftMenu.DataBind(); // if(!GetHermesControl().IsPostBack) SetActiveMenuAndLoadContent(); } protected override void OnInit(EventArgs e) { base.OnInit(e); repLeftMenu.ItemCommand += OnItemCommand_repLeftMenu; repLeftMenu.ItemDataBound += OnItemDataBound_repLeftMenu; } public void SetActiveLeftMenu(string name) { ActiveLeftMenu = name; } private List<Tab> GetMenuItems() { var menuItems = new List<Tab>(); switch (GetHermesControl().CurrentUsecase) { case ElearningCommon.UCConstants.UCManagmentLesson: menuItems.Add(new Tab() { Name = (string)GetLocalResourceObject("Detail"), UsecaseName = ElearningCommon.UCConstants.LessonDetail }); if (LessonId > 0) { menuItems.Add(new Tab() { Name = (string)GetLocalResourceObject("Users"), UsecaseName = ElearningCommon.UCConstants.LessonUsers }); menuItems.Add(new Tab() { Name = (string)GetLocalResourceObject("Tests"), UsecaseName = ElearningCommon.UCConstants.TestsList }); } break; case ElearningCommon.UCConstants.UCManagmentTest: menuItems.Add(new Tab() { Name = (string)GetLocalResourceObject("Detail"), UsecaseName = ElearningCommon.UCConstants.ExamDetail }); if (ExamID > 0) menuItems.Add(new Tab() { Name = (string)GetLocalResourceObject("QuestionAnswers"), UsecaseName = ElearningCommon.UCConstants.QuestionList }); break; } return menuItems; } private void SetActiveMenuAndLoadContent() { SetActiveMenu(); LoadContent(); } protected void OnItemDataBound_repLeftMenu(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { var dataItem = (Tab)e.Item.DataItem; var lb = e.Item.FindControl("lnkNavigate") as LinkButton; var lit = e.Item.FindControl("litText") as Literal; lit.Text = dataItem.Name; lb.CommandName = dataItem.UsecaseName; if (string.IsNullOrEmpty(ActiveLeftMenu)) ActiveLeftMenu = dataItem.UsecaseName; } } protected void OnItemCommand_repLeftMenu(object source, RepeaterCommandEventArgs e) { // if (ActiveLeftMenu == e.CommandName) // return; ActiveLeftMenu = e.CommandName; SetActiveMenuAndLoadContent(); } protected override void LoadViewState(object savedState) { base.LoadViewState(savedState); // if (!string.IsNullOrEmpty(ActiveLeftMenu)) // SetActiveMenuAndLoadContent(); } private void LoadContent() { litTitleContent.Text = (string)GetLocalResourceObject(ActiveLeftMenu); contentControl = Page.LoadControl( GetHermesControl().GetAppItemRelativeUrl(string.Format("~/Usecases/UserControl/{0}.ascx", ActiveLeftMenu))); plhContent.Controls.Clear(); contentControl.ID = "ActiveLeftMenu"; if (contentControl is BaseUserControl) { (contentControl as BaseUserControl).LessonId = LessonId; (contentControl as BaseUserControl).ExamID = ExamID; } plhContent.Controls.Add(contentControl); contentControl.DataBind(); } private void SetActiveMenu() { for (int i = 0; i < repLeftMenu.Items.Count; i++) { HtmlGenericControl listItem = (HtmlGenericControl)repLeftMenu.Items[i].FindControl("ListItem"); LinkButton listItemLink = (LinkButton)listItem.FindControl("lnkNavigate"); if (listItemLink != null) listItemLink.Attributes.Add("class", listItemLink.CommandName == ActiveLeftMenu ? "active" : ""); } } }}<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UCQuestionDetail.ascx.cs" Inherits="Elearning.Usecases.UserControl.QuestionDetail" %><%@ Import Namespace="Elearning" %><%@ Register TagPrefix="include" TagName="imgbutton_1" Src="~/Usecases/CustomField/ButtonWithImage.ascx" %><%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %><%@ Register TagPrefix="include" TagName="TopMenu" Src="~/Usecases/UserControl/TopMenu.ascx" %><telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" > <ajaxsettings> <telerik:AjaxSetting AjaxControlID="rgridAnswers"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="rgridAnswers" LoadingPanelID="RadAjaxLoadingPanel1" /> </UpdatedControls> </telerik:AjaxSetting> </ajaxsettings></telerik:RadAjaxManager> <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" /><include:TopMenu ID="TopMenu1" runat="server"></include:TopMenu><div class="sheet"> <div class="sheet-body"> <div class="content-layout"> <div class="content-layout-row"> <div class="layout-cell content"> <div class="post"> <h1> <asp:Literal runat="server" ID="litTitleContent" meta:resourcekey="title"></asp:Literal> </h1> <div> <div style="float: right; width: 55%"> <telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" HorizontalAlign="NotSet" > <telerik:RadGrid ID="rgridAnswers" runat="server" GridLines="None" OnRowDrop="rgridAnswers_OnRowDrop" AutoGenerateColumns="False" ShowStatusBar="True" AllowAutomaticInserts="True" OnNeedDataSource="rgridAnswers_NeedDataSource" OnItemCreated="OnItemCreated" OnDeleteCommand="rgridAnswers_DeleteCommand" CellSpacing="0" > <ClientSettings AllowRowsDragDrop="True"> <selecting allowrowselect="True" enabledragtoselectrows="False" /> </ClientSettings> <mastertableview commanditemdisplay="Top" datakeynames="ID" width="100%" > <CommandItemSettings AddNewRecordText='<%$ Resources:AddNewRecordText %>' RefreshText='<%$ Resources:RefreshText %>' /> <Columns> <telerik:GridEditCommandColumn ButtonType="ImageButton" FilterControlAltText="Filter EditCommandColumn column" > <ItemStyle CssClass="MyImageButton" /> </telerik:GridEditCommandColumn> <telerik:GridBoundColumn DataField="Text" FilterControlAltText="Filter Text column" meta:resourcekey="QuestionText" UniqueName="Text"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Description" FilterControlAltText="Filter Description column" meta:resourcekey="QuestionDescription" UniqueName="Description"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="ScorePerc" FilterControlAltText="Filter ScorePerc column" meta:resourcekey="QuestionScorePerc" UniqueName="ScorePerc"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn FilterControlAltText="Filter TemplateColumn column" meta:resourcekey="QuestionIsValid" UniqueName="TemplateColumn"> <ItemTemplate> <asp:ImageButton ID="imgIsValid" runat="server" ImageUrl='<%# (bool)Eval("IsValid")? GetAppItemRelativeUrl(ElearningCommon.Icons.Public): GetAppItemRelativeUrl(ElearningCommon.Icons.Delete) %>' meta:resourcekey="imgIsValidResource1" /> </ItemTemplate> <HeaderStyle HorizontalAlign="Center" /> <ItemStyle HorizontalAlign="Center" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn FilterControlAltText="Filter TemplateColumn1 column" UniqueName="TemplateColumn1"> <ItemTemplate> <asp:HiddenField ID="hfSortOrder" runat="server" Value='<%# Eval("SortOrder") %>' /> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" ConfirmDialogType="RadWindow" ConfirmTitle="Delete" FilterControlAltText="Filter DeleteColumn column" meta:resourcekey="QuestionReallyDelete" Text="Delete" UniqueName="DeleteColumn"> <ItemStyle CssClass="MyImageButton" HorizontalAlign="Center" /> </telerik:GridButtonColumn> </Columns> <editformsettings editformtype="WebUserControl" usercontrolname="~/Usecases/UserControl/AnswersDetail.ascx"> <editcolumn filtercontrolalttext="Filter EditCommandColumn1 column" uniquename="EditCommandColumn1"> </editcolumn> </editformsettings> </mastertableview> <filtermenu enableimagesprites="False"> </filtermenu> </telerik:RadGrid> </telerik:RadAjaxPanel> </div> </div> <div class="cleared"> </div> </div> </div> </div> </div> <div class="cleared"> </div> <div class="cleared"> </div> </div></div>using System;using System.Collections.Generic;using System.Collections.Specialized;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using CSCR.Hermes.Controllers;using Elearning.DataAccessLayer;using Telerik.Web.UI;namespace Elearning.Usecases.UserControl{ public partial class QuestionDetail : HermesUserControl { protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (Parameters != null && Parameters[ElearningCommon.PropertyKeys.LessonID] != null) LessonId = Convert.ToInt32(Parameters[ElearningCommon.PropertyKeys.LessonID]); if (Parameters != null && Parameters[ElearningCommon.PropertyKeys.ExamID] != null) ExamID = Convert.ToInt32(Parameters[ElearningCommon.PropertyKeys.ExamID]); if (Parameters[ElearningCommon.PropertyKeys.QuestionID] != null) QuestionId = int.Parse(Parameters[ElearningCommon.PropertyKeys.QuestionID]); TopMenu1.DataBind(); } public int QuestionId { get { if (ViewState[ElearningCommon.PropertyKeys.QuestionID] == null) return -1; return (int)ViewState[ElearningCommon.PropertyKeys.QuestionID]; } set { ViewState[ElearningCommon.PropertyKeys.QuestionID] = value; } } protected void rgridAnswers_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) { rgridAnswers.DataSource = DataManager.Instance.GetAnswersByQuestion(QuestionId); } protected void rgridAnswers_DeleteCommand(object sender, GridCommandEventArgs e) { string ID = (e.Item as GridDataItem).OwnerTableView.DataKeyValues[e.Item.ItemIndex]["ID"].ToString(); DataManager.Instance.DeleteAnswer(int.Parse(ID)); } private void rgridAnswers_Update(object sender, CommandEventArgs e,Answer answer) { rgridAnswers.MasterTableView.ClearEditItems(); DataManager.Instance.UpdateAnswer(answer); rgridAnswers.Rebind(); } private void rgridAnswers_Insert(object sender, CommandEventArgs e,Answer answer) { answer.QuestionReference.SetId(EntityHelper.References.Questions,QuestionId); if (rgridAnswers.Items.Count > 0) { var order = (HiddenField)rgridAnswers.Items[rgridAnswers.Items.Count - 1].FindControl("hfSortOrder"); answer.SortOrder = int.Parse(order.Value) + 1; } else answer.SortOrder = 1; DataManager.Instance.InsertAnswer(answer); rgridAnswers.Rebind(); } protected void OnItemCreated(object sender, GridItemEventArgs e) { if (e.Item is GridEditFormItem && e.Item.IsInEditMode) { AnswersDetail MyUserControl = e.Item.FindControl(GridEditFormItem.EditFormUserControlID) as AnswersDetail; MyUserControl.OnUpdate += rgridAnswers_Update; MyUserControl.OnInsert += rgridAnswers_Insert; } } protected void rgridAnswers_OnRowDrop(object sender, GridDragDropEventArgs e) { if (e.DraggedItems[0] != null) { var orderDrag = GetOrderFromGrid(e.DraggedItems[0]); var orderDest = GetOrderFromGrid(e.DestDataItem); DataManager.Instance.ReOrderAnswers(orderDrag,orderDest); rgridAnswers.Rebind(); } } private int GetOrderFromGrid(GridDataItem item) { var orderDragStr = (item.FindControl("hfSortOrder") as HiddenField).Value; return int.Parse(orderDragStr); } }}
