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();
}
}
}