I am having a problem with the TreeList. I am able to populate the list with parent and children elements. I can update and delete just fine. I can also Insert a new child element just fine. However when I try to insert a root level element with debugging enabled I have not been able to get the InsertCommand to fire. I am also using a user control for the editor. Here is my code as it is.
.aspx Page:
Code Behind:
.aspx Page:
<
div
id
=
"DropUnderWrapper"
>
<
asp:CheckBox
ID
=
"IsUnder"
runat
=
"server"
Text
=
" Drop Under Parent"
/>
</
div
>
<
telerik:RadTreeList
ID
=
"MenuManager"
runat
=
"server"
>
<
Columns
>
<
telerik:TreeListBoundColumn
DataField
=
"MenuText"
HeaderText
=
"Menu Name"
UniqueName
=
"Name"
/>
<
telerik:TreeListHyperLinkColumn
DataNavigateUrlFields
=
"SitePageID"
DataNavigateUrlFormatString
=
"/admin/pageManager/?CID={0}"
DataTextField
=
"PageTitle"
HeaderText
=
"Url Title"
UniqueName
=
"PageTitle"
/>
<
telerik:TreeListBoundColumn
DataField
=
"MenuUrl"
HeaderText
=
"Url"
UniqueName
=
"MenuUrl"
/>
<
telerik:TreeListBoundColumn
DataField
=
"MenuTarget"
HeaderText
=
"Target"
UniqueName
=
"MenuTarget"
HeaderStyle-Width
=
"60px"
/>
<
telerik:TreeListBoundColumn
DataField
=
"IsEnabled"
HeaderText
=
"Status"
UniqueName
=
"MenuItemEnabled"
HeaderStyle-Width
=
"60px"
/>
<
telerik:TreeListEditCommandColumn
ButtonType
=
"ImageButton"
HeaderStyle-Width
=
"60px"
AddRecordText
=
"Add Menu Item"
Reorderable
=
"false"
/>
<
telerik:TreeListButtonColumn
ButtonType
=
"ImageButton"
ButtonCssClass
=
"deleteConfirm"
CommandName
=
"Delete"
HeaderStyle-Width
=
"30px"
/>
</
Columns
>
<
EditFormSettings
UserControlPath
=
"~/includes/userControls/MenuForm.ascx"
EditFormType
=
"WebUserControl"
>
</
EditFormSettings
>
<
ClientSettings
AllowItemsDragDrop
=
"true"
>
<
Selecting
AllowItemSelection
=
"True"
/>
</
ClientSettings
>
</
telerik:RadTreeList
>
Code Behind:
private string[] DataKey = { "MenuID" };
private string[] ParentKey = { "ParentID" };
private List<
SiteMenu
> MenuList = new List<
SiteMenu
>();
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
MenuManager.Skin = "Default";
MenuManager.AllowPaging = false;
MenuManager.AutoGenerateColumns = false;
MenuManager.GridLines = TreeListGridLines.Both;
MenuManager.ShowTreeLines = false;
MenuManager.NeedDataSource += MenuManager_NeedDataSource;
MenuManager.InsertCommand += MenuManager_InsertCommand;
MenuManager.UpdateCommand += MenuManager_UpdateCommand;
MenuManager.DeleteCommand += MenuManager_DeleteCommand;
MenuManager.ItemDataBound += MenuManager_ItemDataBound;
MenuManager.ItemCommand += MenuManager_ItemCommand;
MenuManager.ClientSettings.AllowItemsDragDrop = true;
MenuManager.ClientSettings.Selecting.AllowItemSelection = true;
MenuManager.AllowMultiItemSelection = true;
MenuManager.DataKeyNames = DataKey;
MenuManager.ParentDataKeyNames = ParentKey;
MenuManager.ItemDrop += MenuManager_RowDrop;
MenuList = new SiteMenu().SelectAllPublicMenuItemsBySiteIDNotDeleted(ThisSiteID);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!IsPostBack)
{
MenuManager.ExpandToLevel(1);
}
}
protected void MenuManager_NeedDataSource(object sender, TreeListNeedDataSourceEventArgs e)
{
MenuManager.DataSource = MenuList;
}
protected void MenuManager_ItemCommand(object sender, TreeListCommandEventArgs e)
{
if (e.CommandName == RadTreeList.InitInsertCommandName)
{
MenuManager.ClientSettings.Reordering.AllowColumnsReorder = false;
}
if (e.CommandName == RadTreeList.CancelCommandName)
{
MenuManager.ClientSettings.Reordering.AllowColumnsReorder = true;
}
}
protected void MenuManager_ItemDataBound(object sender, TreeListItemDataBoundEventArgs e)
{
//irrelevant
}
protected void MenuManager_InsertCommand(object sender, TreeListCommandEventArgs e)
{
TreeListEditFormItem item = e.Item as TreeListEditFormItem;
UserControl MenuForm = (UserControl)e.Item.FindControl(TreeListEditFormItem.EditFormUserControlID);
int parentID = (int)item.ParentItem.GetDataKeyValue("MenuID");
RadComboBox menuType = (RadComboBox)MenuForm.FindControl("MenuSelectList");
RadTextBox menuText = (RadTextBox)MenuForm.FindControl("MenuText");
switch (menuType.SelectedItem.Text)
{
case "Editable Content":
RadTextBox pageTitle = (RadTextBox)MenuForm.FindControl("PageTitle");
CheckBox defaultHomepage = (CheckBox)MenuForm.FindControl("DefaultHomepage");
if (new SiteMenu().InsertNewMenuItem(parentID, menuText.Text, pageTitle.Text, defaultHomepage.Checked))
{
Response.Redirect("/admin/menuManager/");
}
break;
case "Document Link":
UploadedFile uploadedFile = null;
RadUpload docUpload = (RadUpload)MenuForm.FindControl("DocumentLink");
if (docUpload.UploadedFiles.Count > 0)
{
uploadedFile = docUpload.UploadedFiles[0];
}
if (new SiteMenu().InsertNewDocumentLink(parentID, menuText.Text, uploadedFile.GetName()))
{
Response.Redirect("/admin/menuManager/");
}
break;
case "External / Custom Link":
RadTextBox linkUrl = (RadTextBox)MenuForm.FindControl("LinkUrl");
RadComboBox target = (RadComboBox)MenuForm.FindControl("LinkTarget");
if (new SiteMenu().InsertExternalLink(parentID, menuText.Text, linkUrl.Text, target.Text))
{
Response.Redirect("/admin/menuManager/");
}
break;
case "Chamber Modules":
RadComboBox moduleType = (RadComboBox)MenuForm.FindControl("ModulePageType");
if (new SiteMenu().InsertNewModuleMenuItem(parentID, menuText.Text, moduleType.SelectedValue))
{
Response.Redirect("/admin/menuManager/");
}
break;
}
}
protected void MenuManager_UpdateCommand(object sender, TreeListCommandEventArgs e)
{
//irrelevant
}
protected void MenuManager_DeleteCommand(object sender, TreeListCommandEventArgs e)
{
//irrelevant
}
protected void MenuManager_RowDrop(object sender, TreeListItemDragDropEventArgs e)
{
int key = (int)e.DraggedItems[0].GetDataKeyValue("MenuID");
int destinationId = 0;
int sortOrder = 0;
if (IsUnder.Checked)
{
destinationId = (int)e.DestinationDataItem.GetDataKeyValue("MenuID");
sortOrder = 1;
}
else
{
destinationId = (int)e.DestinationDataItem.GetParentDataKeyValue("ParentID");
sortOrder = new SiteMenu().SelectThisMenuItem((int)e.DestinationDataItem.GetDataKeyValue("MenuID"), ThisSiteID).SortOrder + 1;
}
if (destinationId == 0)
{
if (key != destinationId)
{
MenuList.FirstOrDefault(i => i.MenuID == key).ParentID = destinationId;
MenuList.FirstOrDefault(i => i.MenuID == key).SortOrder = sortOrder;
foreach (SiteMenu menuItem in MenuList.Where(i => i.ParentID == destinationId))
{
if (menuItem.SortOrder >= sortOrder && menuItem.MenuID != key)
{
menuItem.SortOrder += 1;
}
}
if (new SiteMenu().UpdateMenuListByParentID(destinationId, MenuList.Where(i => i.ParentID == destinationId).ToList()))
{
Response.Redirect("/admin/menuManager/");
}
}
}
else
{
if (key != destinationId && key != MenuList.FirstOrDefault(i => i.MenuID == destinationId).ParentID)
{
MenuList.FirstOrDefault(i => i.MenuID == key).ParentID = destinationId;
MenuList.FirstOrDefault(i => i.MenuID == key).SortOrder = sortOrder;
foreach (SiteMenu menuItem in MenuList.Where(i => i.ParentID == destinationId))
{
if (menuItem.SortOrder >= sortOrder && menuItem.MenuID != key)
{
menuItem.SortOrder += 1;
}
}
if (new SiteMenu().UpdateMenuListByParentID(destinationId, MenuList.Where(i => i.ParentID == destinationId).ToList()))
{
Response.Redirect("/admin/menuManager/");
}
}
}
}