<
telerik:RadGrid
ID
=
"RadGridDocuments"
runat
=
"server"
CellSpacing
=
"-1"
GridLines
=
"Both"
AutoGenerateColumns
=
"false"
OnItemDataBound
=
"RadGridDocuments_ItemDataBound"
OnPreRender
=
"RadGridDocuments_PreRender"
>
<
ClientSettings
AllowColumnsReorder
=
"True"
ReorderColumnsOnClient
=
"True"
>
<
Selecting
AllowRowSelect
=
"True"
/>
</
ClientSettings
>
<
MasterTableView
EditMode
=
"InPlace"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"FileName"
HeaderText
=
"File Name"
UniqueName
=
"FileName"
ReadOnly
=
"true"
>
</
telerik:GridBoundColumn
>
<
telerik:GridDropDownColumn
UniqueName
=
"Type"
HeaderText
=
"Type"
DataField
=
"Type"
EmptyListItemText
=
"--Choose an option--"
EmptyListItemValue
=
""
>
</
telerik:GridDropDownColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
protected void ButtonAddDetails_Click(object sender, EventArgs e)
{
List<
Document
> docs = new List<
Document
>();
foreach (UploadedFile f in RadAsyncUploadDocuments.UploadedFiles)
{
docs.Add(new Document(f));
}
RadGridDocuments.DataSource = docs;
RadGridDocuments.DataBind();
}
protected void RadGridDocuments_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
if (e.Item is GridEditableItem && e.Item.IsInEditMode)
{
GridEditableItem editedItem = e.Item as GridEditableItem;
GridEditManager editMan = editedItem.EditManager;
GridDropDownListColumnEditor editor = (GridDropDownListColumnEditor)(editMan.GetColumnEditor("Type"));
//in case you have RadComboBox editor for the GridDropDownColumn (this is the default editor),
//you will need to use ComboBoxControl below instead of DropDownListControl
//and add RadComboBoxItems instead of ListItems to the Items collection of the editor
editor.ComboBoxControl.Items.Add(new RadComboBoxItem("FAA Administrator's Order", "FAA Administrator's Order"));
editor.ComboBoxControl.Items.Add(new RadComboBoxItem("Notice of Appeal", "Notice of Appeal"));
}
}
protected void RadGridDocuments_PreRender(object sender, System.EventArgs e)
{
foreach (GridItem item in RadGridDocuments.MasterTableView.Items)
{
if (item is GridEditableItem)
{
GridEditableItem editableItem = item as GridDataItem;
editableItem.Edit = true;
}
}
RadGridDocuments.Rebind();
}
public class Document
{
private UploadedFile file;
private string type;
public Document(UploadedFile file)
{
this.file = file;
this.type = string.Empty;
}
public UploadedFile File
{
get
{
return this.file;
}
}
public string FileName
{
get
{
return this.file.FileName;
}
}
public string Type
{
get
{
return this.type;
}
set
{
this.type = value;
}
}
}
<tr style="vertical-align:middle; width:100%">
<td style="vertical-align:middle; width:100%">
<telerik:RadSplitter ID="trsCWCMPrimary" runat="server" BorderWidth="0" BorderSize="0" BorderStyle="None" Height="520px" LiveResize="true" Orientation="Vertical" ResizeMode="Proportional" Width="100%">
<telerik:RadPane ID="trpCWCMPrimaryTree" runat="server" Collapsed="false" Width="20%">
<telerik:RadTreeView ID="trtvCWCMPrimary" runat="server" CssClass="sfecua_chkrdo_dataLeftSmall" Height="99%" Width="100%" OnNodeClick="trtvCWCMPrimary_NodeClick" OnNodeCollapse="trtvCWCMPrimary_NodeCollapse" OnNodeExpand="trtvCWCMPrimary_NodeExpand" onclientnodeclicking="OnClientNodeClicking">
</telerik:RadTreeView>
</telerik:RadPane>
<telerik:RadSplitBar ID="trsbPrimarySecondary" runat="server" CollapseMode="Forward"></telerik:RadSplitBar>
<telerik:RadPane ID="trpCWCMSecondaryTableDetails" runat="server">
<div id="divCustomerMgmt" style="display:block; border:none;">
<iframe runat="server" src="./../CustWaitLoading.aspx" id="ifrmCWCMCustCustomerMgmt" name="ifrmCWCMCustCustomerMgmt" width="100%" height="100%" marginwidth="0" frameborder="0" scrolling="no">Customer Mgmt IFRAME</iframe>
</div>
<div id="divAccountMgmt" style="display:none; border:none;">
<iframe runat="server" src="./../CustWaitLoading.aspx" id="ifrmCWCMCustAccountMgmt" name="ifrmCWCMCustAccountMgmt" width="100%" height="100%" marginwidth="0" frameborder="0" scrolling="no">Account Mgmt IFRAME</iframe>
</div>
<div id="divBillingMgmt" style="display:none; border:none;">
<iframe runat="server" src="./../CustWaitLoading.aspx" id="ifrmCWCMCustBillingMgmt" name="ifrmCWCMCustBillingMgmt" width="100%" height="100%" marginwidth="0" frameborder="0" scrolling="no">Billing Mgmt IFRAME</iframe>
</div>
</telerik:RadPane>
</telerik:RadSplitter>
</td>
</tr>
01.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %>
02.
03.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
04.
05.
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
06.
<
head
runat
=
"server"
>
07.
<
title
></
title
>
08.
<
telerik:RadStyleSheetManager
ID
=
"RadStyleSheetManager1"
runat
=
"server"
/>
09.
</
head
>
10.
<
body
>
11.
<
form
id
=
"form1"
runat
=
"server"
>
12.
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
>
13.
<
Scripts
>
14.
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.Core.js"
/>
15.
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.jQuery.js"
/>
16.
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.jQueryInclude.js"
/>
17.
</
Scripts
>
18.
</
telerik:RadScriptManager
>
19.
<
script
type
=
"text/javascript"
>
20.
//<!--
21.
function onClientContextMenuShowing(sender, args) {
22.
var treeNode = args.get_node();
23.
treeNode.set_selected(true);
24.
//enable/disable menu items
25.
setMenuItemsState(args.get_menu().get_items(), treeNode);
26.
}
27.
28.
function onClientContextMenuItemClicking(sender, args) {
29.
var menuItem = args.get_menuItem();
30.
var treeNode = args.get_node();
31.
32.
menuItem.get_menu().hide();
33.
34.
switch (menuItem.get_value()) {
35.
case "Copy":
36.
break;
37.
case "Rename":
38.
treeNode.startEdit();
39.
break;
40.
case "NewFolder":
41.
break;
42.
case "Delete":
43.
var result = confirm("Are you sure you want to delete the item: " + treeNode.get_text());
44.
args.set_cancel(!result);
45.
break;
46.
}
47.
}
48.
49.
//this method disables the appropriate context menu items
50.
function setMenuItemsState(menuItems, treeNode) {
51.
for (var i = 0; i <
menuItems.get_count
() ; i++) {
52.
var
menuItem
=
menuItems
.getItem(i);
53.
switch (menuItem.get_value()) {
54.
case "NewFolder":
55.
//nothing
56.
break;
57.
default:
58.
if (treeNode.get_parent() == treeNode.get_treeView()) {
59.
menuItem.set_enabled(false);
60.
}
61.
else {
62.
menuItem.set_enabled(true);
63.
}
64.
break;
65.
}
66.
}
67.
}
68.
//-->
69.
</
script
>
70.
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
UpdatePanelsRenderMode
=
"Inline"
>
71.
</
telerik:RadAjaxManager
>
72.
<
telerik:RadWindowManager
ID
=
"RadWindowManager1"
runat
=
"server"
></
telerik:RadWindowManager
>
73.
<
telerik:RadAjaxLoadingPanel
ID
=
"RadAjaxLoadingPanel2"
runat
=
"server"
Skin
=
"Default"
></
telerik:RadAjaxLoadingPanel
>
74.
<
telerik:RadAjaxPanel
ID
=
"RadAjaxPanel2"
runat
=
"server"
LoadingPanelID
=
"RadAjaxLoadingPanel2"
>
75.
<
telerik:RadTreeView
ID
=
"rtvSavedReports"
runat
=
"server"
AllowNodeEditing
=
"True"
EnableDragAndDrop
=
"False"
EnableDragAndDropBetweenNodes
=
"False"
OnContextMenuItemClick
=
"rtvSavedReports_ContextMenuItemClick"
76.
OnClientContextMenuItemClicking
=
"onClientContextMenuItemClicking"
OnClientContextMenuShowing
=
"onClientContextMenuShowing"
77.
OnNodeEdit
=
"rtvSavedReports_NodeEdit"
>
78.
<
ContextMenus
>
79.
<
telerik:RadTreeViewContextMenu
ID
=
"MainContextMenu"
runat
=
"server"
>
80.
<
Items
>
81.
<
telerik:RadMenuItem
Value
=
"Copy"
Text
=
"Copy ..."
ImageUrl
=
"~/images/10.gif"
>
82.
</
telerik:RadMenuItem
>
83.
<
telerik:RadMenuItem
Value
=
"Rename"
Text
=
"Rename ..."
Enabled
=
"false"
ImageUrl
=
"~/images/rename.gif"
>
84.
</
telerik:RadMenuItem
>
85.
<
telerik:RadMenuItem
Value
=
"NewFolder"
Text
=
"New Folder"
ImageUrl
=
"~/images/12.gif"
>
86.
</
telerik:RadMenuItem
>
87.
<
telerik:RadMenuItem
Value
=
"Delete"
Text
=
"Delete Folder"
ImageUrl
=
"~/images/7.gif"
>
88.
</
telerik:RadMenuItem
>
89.
</
Items
>
90.
<
CollapseAnimation
Type
=
"none"
></
CollapseAnimation
>
91.
</
telerik:RadTreeViewContextMenu
>
92.
</
ContextMenus
>
93.
</
telerik:RadTreeView
>
94.
</
telerik:RadAjaxPanel
>
95.
</
form
>
96.
</
body
>
97.
</
html
>
01.
Imports
Telerik.Web.UI
02.
03.
Partial
Class
Default2
04.
Inherits
System.Web.UI.Page
05.
06.
Protected
Sub
Page_Load(sender
As
Object
, e
As
EventArgs)
Handles
Me
.Load
07.
If
Not
IsPostBack
Then
08.
PopulateSaveTrees()
09.
End
If
10.
End
Sub
11.
12.
13.
Private
Sub
PopulateSaveTrees()
14.
Dim
savedTreeXML
As
Object
= GetSavedTree()
15.
If
savedTreeXML
Is
DBNull.Value
Then
16.
'first time create
17.
rtvSavedReports.LoadXml(
"<Tree><Node Text="
"Saved Reports"
" Value="
"/"
" AllowEdit="
"False"
" ImageUrl="
"~/images/folder.png"
"/></Tree>"
)
18.
Else
19.
rtvSavedReports.LoadXml(savedTreeXML)
20.
End
If
21.
End
Sub
22.
23.
24.
Protected
Sub
rtvSavedReports_ContextMenuItemClick(sender
As
Object
, e
As
RadTreeViewContextMenuEventArgs)
Handles
rtvSavedReports.ContextMenuItemClick
25.
Dim
clickedNode
As
RadTreeNode = e.Node
26.
27.
Select
Case
e.MenuItem.Value
28.
Case
"Copy"
29.
Dim
clonedNode
As
RadTreeNode = clickedNode.Clone()
30.
clonedNode.Text =
String
.Format(
"Copy of {0}"
, clickedNode.Text)
31.
clickedNode.InsertAfter(clonedNode)
32.
'set node's value so we can find it in startNodeInEditMode
33.
clonedNode.Value = clonedNode.GetFullPath(
"/"
)
34.
clonedNode.Selected =
True
35.
StartNodeInEditMode(clonedNode.Value)
36.
Case
"NewFolder"
37.
Dim
newFolder
As
New
RadTreeNode(
String
.Format(
"New Folder {0}"
, clickedNode.Nodes.Count + 1))
38.
newFolder.Selected =
True
39.
newFolder.ImageUrl = clickedNode.ImageUrl
40.
clickedNode.Nodes.Add(newFolder)
41.
clickedNode.Expanded =
True
42.
newFolder.Value = newFolder.GetFullPath(
"/"
)
43.
StartNodeInEditMode(newFolder.Value)
44.
Case
"Delete"
45.
If
clickedNode.Nodes.Count <> 0
Then
46.
RadScriptManager.RegisterStartupScript(Page, Page.[
GetType
](),
"nodedeleteerror"
,
"alert('Cannot delete node with children!\nEither delete or move all children.');"
,
True
)
47.
Exit
Select
48.
End
If
49.
clickedNode.Remove()
50.
End
Select
51.
End
Sub
52.
53.
Private
Sub
StartNodeInEditMode(
ByVal
nodeValue
As
String
)
54.
'find the node by its Value and edit it when page loads
55.
Dim
js
As
String
=
"Sys.Application.add_load(editNode); function editNode(){ "
56.
js +=
"var tree = $find("
""
+ rtvSavedReports.ClientID +
""
");"
57.
js +=
"var node = tree.findNodeByValue('"
+ nodeValue +
"');"
58.
js +=
"if (node) node.startEdit();"
59.
js +=
"Sys.Application.remove_load(editNode);};"
60.
61.
RadScriptManager.RegisterStartupScript(Page, Page.[
GetType
](),
"nodeEdit"
, js,
True
)
62.
End
Sub
63.
64.
Protected
Sub
rtvSavedReports_NodeEdit(sender
As
Object
, e
As
RadTreeNodeEditEventArgs)
Handles
rtvSavedReports.NodeEdit
65.
e.Node.Text = e.Text
66.
End
Sub
67.
68.
Private
Function
GetSavedTree()
As
Object
69.
Return
DBNull.Value
70.
End
Function
71.
72.
End
Class