if (!Page.IsPostBack){ TCMenu _rb = new TCMenu(); _rb.InitRibbonBar(ref trans_RibbonBarMenu); //dynamically adding tabs, groups and buttons - see code below Session["Test"] = trans_RibbonBarMenu; }else{ trans_RibbonBarMenu = (Session["Test"] as RadRibbonBar);}public void InitRibbonBar(ref RadRibbonBar ribbonBar, string formName, int userLevel){ CriteriaOperator filter; filter = CriteriaOperator.Parse(String.Format("FormName = '{0}'", formName)); XPCollection _xpoObjects = new XPCollection(DbUtils.GetDefaultSession, typeof(XPOMenuSettings), filter, null); SortProperty TabSortOrder = new SortProperty("TabSortOrder", DevExpress.Xpo.DB.SortingDirection.Ascending); _xpoObjects.Sorting.Add(TabSortOrder); SortProperty GroupSortOrder = new SortProperty("GroupSortOrder", DevExpress.Xpo.DB.SortingDirection.Ascending); _xpoObjects.Sorting.Add(GroupSortOrder); SortProperty sortOrder = new SortProperty("SortOrder", DevExpress.Xpo.DB.SortingDirection.Ascending); _xpoObjects.Sorting.Add(sortOrder); RibbonBarTab rbt; RibbonBarGroup rbg; foreach (XPOMenuSettings _xpoButton in _xpoObjects) { bool rbt_found = true; bool rbg_found = true; rbt = ribbonBar.FindTabByValue(_xpoButton.TabValue); if (rbt == null) { rbt = new RibbonBarTab(); rbt.ID = _xpoButton.TabId; rbt.Text = _xpoButton.TabText; rbt.Value = _xpoButton.TabValue; rbt_found = false; } rbg = ribbonBar.FindGroupByValue(_xpoButton.GroupValue); if (rbg == null) { rbg = new RibbonBarGroup(); rbg.ID = _xpoButton.GroupId; rbg.Text = _xpoButton.GroupText; rbg.Value = _xpoButton.GroupValue; rbg_found = false; } RibbonBarButton rbb = new RibbonBarButton(); rbb.Size = (RibbonBarItemSize)_xpoButton.Size; rbb.Text = _xpoButton.Text; rbb.Value = _xpoButton.Value; rbb.ID = _xpoButton.Id; rbb.ImageUrl = _xpoButton.ImageUrl; rbb.ImageUrlLarge = _xpoButton.ImageUrlLarge; rbb.Visible = _xpoButton.Visible && (_xpoButton.UserLevel >= userLevel); rbb.Width = 80; rbg.Items.Add(rbb); if (!rbg_found) rbt.Groups.Add(rbg); if (!rbt_found) ribbonBar.Tabs.Add(rbt); }}Clientside works fine, but as soon as I click a button that calls serverside, I get the following error message:
[ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index]
System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) +64
System.ThrowHelper.ThrowArgumentOutOfRangeException() +15
System.Collections.Generic.List`1.get_Item(Int32 index) +7500084
Telerik.Web.UI.RadRibbonBar.RaisePostBackEvent(String eventArgument) +272
Telerik.Web.UI.RadRibbonBar.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +39
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +175
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
function GetGridServerElement(radGridID, serverID, ControlType) {
var grid = document.getElementById(radGridID);
var elements = grid.getElementsByTagName("*");
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
if (element.id.indexof(serverID)>0) {
if (ControlType == "rad") {
return $find(element.id);
}
else {
return element;
}
}
}
}
<!--#include file = ../Shared/gridHeaderTemplates_Layout.htm-->protected void AddFolder_OnClick(object sender, EventArgs e) { RadTreeNode node = (RadTreeNode)TicketFoldersTreeview.SelectedNode; if (node != null) { node.Nodes.Add(new RadTreeNode("New Folder")); } int parentId = (int)Convert.ToInt32(GetNode.Value); Ticket_Folder ticFolder = new Ticket_Folder(); Ticket_Folder parentFolder = DbClient.GetList<Ticket_Folder>("Ticket_Folders_ID = " + parentId)[0]; RadTreeNode newNode = new RadTreeNode(); string nodeName = Resources.Common.New_Folder; ticFolder.Ticket_Folders_Name = nodeName; ticFolder.Ticket_Folders_PARENT_ID = parentId; ticFolder.Ticket_Folders_Global = parentFolder.Ticket_Folders_Global; ticFolder.Ticket_Folders_People_ID = ((TBS.HelpDesk.Model.TBSSecurity)(Session["SecurityClass"])).People_ID; DbClient.Insert<Ticket_Folder>(ticFolder); newNode.Text = nodeName; newNode.Value = ticFolder.Ticket_Folders_ID.ToString(); newNode.Attributes.Add("PeopleID", ((TBS.HelpDesk.Model.TBSSecurity)(Session["SecurityClass"])).People_ID.ToString()); newNode.AllowEdit = true; hdNodeCount.Value = "1"; string strScript = "Sys.Application.add_load(function(){ EditableNode(\"" + newNode.Value + "\")})"; ScriptManager.RegisterStartupScript(this.Page, typeof(string), "ScriptKey", strScript, true); }function EditableNode(value) { debugger if (document.getElementById('hdNodeCount').value == '1') { var tree = $find("<%= TicketFoldersTreeview.ClientID %>"); var node = tree.findNodeByValue(value); if (node != null) { node.startEdit(); } } }