Hi Telerik !
I have added an TWO COLUMNS on to my GRID CONTEXT MENU(using your sample code for how to Add Custom Column).
Created Date & Modified Date are the two customs columns that I have added on to the GRID CONTEXT MENU.
Iam not able to get the value against CREATED DATE in the GRID CONTEXT MENU, though I have used the CODE that you have mentioned (in your samples).
Below is the vode that I have been using in my .CS file :-
While for CUSTOMCOLUMNSCONTENT PROVIDER , I have used the code in the separate file as shown below :-
My application does not return any error.
I dont know where is Iam doing mistake ???
Please help ??
Ajay Jamwal
I have added an TWO COLUMNS on to my GRID CONTEXT MENU(using your sample code for how to Add Custom Column).
Created Date & Modified Date are the two customs columns that I have added on to the GRID CONTEXT MENU.
Iam not able to get the value against CREATED DATE in the GRID CONTEXT MENU, though I have used the CODE that you have mentioned (in your samples).
Below is the vode that I have been using in my .CS file :-
| using System; |
| using System.Collections; |
| using System.Data; |
| using System.Configuration; |
| using System.Drawing; |
| using System.Drawing.Imaging; |
| using System.IO; |
| using System.Web; |
| using System.Collections.Generic; |
| using Telerik.Web.UI.Widgets; |
| using Telerik.Web.UI; |
| using System.Data.SqlClient; |
| using System.Web.UI.WebControls; |
| public partial class DocumentManagementSystem : System.Web.UI.Page |
| { |
| protected void Page_Load(object sender, EventArgs e) |
| { |
| //DocumentsRadFileExplorer.WindowManager.ReloadOnShow = true; |
| GetMappedPath GMP = new GetMappedPath(); |
| Dictionary<string, string> mappedPathsInConfigFile = GMP.GetMappingsFromConfigFile(); |
| string DocumentPath = ""; |
| foreach (KeyValuePair<string, string> mappedPath in mappedPathsInConfigFile) |
| { |
| DocumentPath = mappedPath.Value.Replace("/", "\\"); |
| } |
| string VirtualPath = Request["__EVENTARGUMENT"]; |
| string EventTarget = Request["__EVENTTARGET"]; |
| if (EventTarget == "Archive") |
| { |
| if (VirtualPath.LastIndexOf("/") + 1 == VirtualPath.Length) |
| { |
| Archive(VirtualPath, "Folder",DocumentPath ); |
| } |
| else |
| { |
| Archive(VirtualPath, "File",DocumentPath ); |
| } |
| } |
| if (!IsPostBack) |
| { |
| string[] viewPaths = new string[] { DocumentPath }; |
| string[] uploadPaths = new string[] { DocumentPath }; |
| string[] deletePaths = new string[] { DocumentPath }; |
| DocumentsRadFileExplorer.Configuration.ContentProviderTypeName = typeof(CustomFileSystemProvider).AssemblyQualifiedName; |
| DocumentsRadFileExplorer.Configuration.ViewPaths = viewPaths; |
| DocumentsRadFileExplorer.Configuration.UploadPaths = uploadPaths; |
| DocumentsRadFileExplorer.Configuration.DeletePaths = deletePaths; |
| AddCreatedAndModifiedDate(); |
| } |
| //if you want the custom context menu item to be visible in the grid as well |
| if (!IsPostBack) |
| { |
| //context menu item |
| RadMenuItem customMenuOption = new RadMenuItem("Archive"); |
| customMenuOption.PostBack = false; |
| customMenuOption.Value = "Archive"; |
| if (DocumentsRadFileExplorer.TreeView.ContextMenus[0].Items.FindItemByText("Archive") == null) |
| { |
| DocumentsRadFileExplorer.TreeView.ContextMenus[0].Items.Add(customMenuOption); |
| } |
| DocumentsRadFileExplorer.GridContextMenu.Items.Add(customMenuOption.Clone()); |
| DocumentsRadFileExplorer.TreeView.OnClientContextMenuItemClicked = "treeContextMenuClicked"; |
| } |
| } |
| private void AddGridColumn(string name, string uniqueName, bool sortable) |
| { |
| //remove first if grid has a column with that name |
| //RemoveGridColumn(uniqueName); |
| // Add a new column with the specified name |
| GridTemplateColumn gridTemplateColumn1 = new GridTemplateColumn(); |
| gridTemplateColumn1.HeaderText = name; |
| if (sortable) |
| { |
| gridTemplateColumn1.SortExpression = uniqueName; |
| gridTemplateColumn1.UniqueName = uniqueName; |
| gridTemplateColumn1.DataField = uniqueName; |
| } |
| DocumentsRadFileExplorer.Grid.Columns.Add(gridTemplateColumn1); |
| } |
| private void AddCreatedAndModifiedDate() |
| { |
| AddGridColumn("Created Date", "Date", true); |
| AddGridColumn("Modified Date", "Date", true); |
| } |
| private static int DateComparer(FileBrowserItem item1, FileBrowserItem item2) |
| { |
| //treat folders separate from files |
| DateTime date1 = DateTime.Parse(item1.Attributes["Date"]); |
| DateTime date2 = DateTime.Parse(item2.Attributes["Date"]); |
| if (item1 is DirectoryItem) |
| { |
| if (item2 is DirectoryItem) |
| { |
| return DateTime.Compare(date1, date2); |
| } |
| else |
| { |
| return -1; |
| } |
| } |
| else |
| { |
| if (item2 is DirectoryItem) |
| { |
| return 1; |
| } |
| else |
| { |
| return DateTime.Compare(date1, date2); |
| } |
| } |
| } |
| public void Archive(string VirtualPath, string DocType, string DocumentPath) |
| { |
| string physicalTargetPath = DocumentPath.Substring(0,DocumentPath.IndexOf("SharedDocument")).Replace("\\","/") + VirtualPath; |
| if (DocType == "Folder") |
| FileSystem.ArchiveFolder(physicalTargetPath, VirtualPath); |
| else |
| FileSystem.ArchiveFile(physicalTargetPath, VirtualPath); |
| Response.Redirect("DocumentManagementSystem.aspx"); |
| } |
| protected void DocumentsRadFileExplorer_GridPopulated(object sender, RadFileExplorerGridEventArgs e) |
| { |
| //implement sorting for the custom Date column |
| string CreatedDateColumn = e.SortColumnName; |
| string ModifiedDatesortingColumn = e.SortColumnName; |
| if (CreatedDateColumn == "Created Date") |
| { |
| e.List.Sort(DateComparer); |
| if (e.SortDirection.IndexOf("DESC") != -1) |
| { |
| //reverse order |
| e.List.Reverse(); |
| } |
| } |
| if (ModifiedDatesortingColumn == "Modified Date") |
| { |
| e.List.Sort(DateComparer); |
| if (e.SortDirection.IndexOf("DESC") != -1) |
| { |
| //reverse order |
| e.List.Reverse(); |
| } |
| } |
| } |
| //public class CustomColumnsContentProvider : FileSystemContentProvider |
| //{ |
| //} |
| } |
While for CUSTOMCOLUMNSCONTENT PROVIDER , I have used the code in the separate file as shown below :-
| using System; |
| using System.Collections.Generic; |
| using System.Linq; |
| using System.Web; |
| using Telerik.Web.UI.Widgets; |
| using System.Configuration; |
| using System.IO; |
| using System.Security.Permissions; |
| using System.Security; |
| using System.Xml; |
| using System.Text.RegularExpressions; |
| /// <summary> |
| /// Summary description for CustomFileSistemProvider |
| /// </summary> |
| public class CustomFileSystemProvider : FileBrowserContentProvider |
| { |
| GetMappedPath GMP = new GetMappedPath(); |
| private string _itemHandlerPath; |
| public string ItemHandlerPath |
| { |
| get |
| { |
| return this._itemHandlerPath; |
| } |
| } |
| private PathPermissions fullPermissions = PathPermissions.Read | PathPermissions.Delete | PathPermissions.Upload; |
| private Dictionary<string, string> mappedPathsInConfigFile; |
| /// <summary> |
| /// Returns the mappings from the configuration file ; |
| /// </summary> |
| public Dictionary<string, string> MappedPaths |
| { |
| get { return mappedPathsInConfigFile; } |
| } |
| public CustomFileSystemProvider(HttpContext context, string[] searchPatterns, string[] viewPaths, string[] uploadPaths, string[] deletePaths, string selectedUrl, string selectedItemTag) |
| : |
| base(context, searchPatterns, viewPaths, uploadPaths, deletePaths, selectedUrl, selectedItemTag) |
| { |
| // The paths look like "C:\Foder_1\Folder_2" or "C:\Foder_1\Folder_2\" ; |
| this.mappedPathsInConfigFile = GMP.GetMappingsFromConfigFile(); ; |
| this._itemHandlerPath = GMP.GetPathToGenericHandler(); |
| } |
| public override DirectoryItem ResolveRootDirectoryAsTree(string path) |
| { |
| string physicalPath; |
| string virtualPath = string.Empty; |
| if (this.IsPhysicalPath(path)) |
| {// The path is a physical path ; |
| physicalPath = path; |
| foreach (KeyValuePair<string, string> mappedPath in MappedPaths) |
| { |
| // Check whether a mapping exists for the current physical paths ; |
| if (GMP.AddSlashAtEndOfPhysicalPath(physicalPath).ToLower().StartsWith(mappedPath.Value.ToLower())) |
| {// Exists |
| virtualPath = Regex.Replace(GMP.AddSlashAtEndOfPhysicalPath(physicalPath), Regex.Escape(mappedPath.Value), mappedPath.Key, RegexOptions.IgnoreCase); |
| virtualPathvirtualPath = virtualPath.Replace('\\', '/'); |
| virtualPath = GMP.AddSlashAtEndOfVirtualPath(virtualPath); |
| break;// Exit the 'foreach' loop ; |
| } |
| } |
| // Mappind does not exist ; |
| } |
| else |
| {// Virtual path ; |
| virtualPath = GMP.AddSlashAtEndOfVirtualPath(path); |
| physicalPath = this.GetPhysicalFromVirtualPath(path); |
| if (physicalPath == null) |
| return null; |
| } |
| DirectoryItem result = new DirectoryItem(this.GetDirectoryName(physicalPath), string.Empty, virtualPath, string.Empty, fullPermissions, null, GetDirectories(virtualPath)); |
| foreach (DirectoryItem dirItem in result.Directories) |
| { |
| // Get the information from the physical directory |
| DirectoryInfo dInfo = new DirectoryInfo(Context.Server.MapPath(VirtualPathUtility.AppendTrailingSlash(dirItem.Path))); |
| // Add the information to the attributes collection of the item. It will be automatically picked up by the FileExplorer |
| // If the name attribute matches the unique name of a grid column |
| dirItem.Attributes.Add("Created Date", dInfo.LastWriteTime.ToString()); |
| dirItem.Attributes.Add("Modified Date", dInfo.LastAccessTime.ToString()); |
| } |
| return result; |
| } |
| public override DirectoryItem ResolveDirectory(string virtualPath) |
| { |
| string physicalPath; |
| physicalPath = this.GetPhysicalFromVirtualPath(virtualPath); |
| if (physicalPath == null) |
| return null; |
| DirectoryItem result = new DirectoryItem(this.GetDirectoryName(physicalPath), virtualPath, virtualPath, virtualPath, fullPermissions, GetFiles(virtualPath), null); |
| foreach (FileItem fileItem in result.Files) |
| { |
| // Get the information from the physical file |
| FileInfo fInfo = new FileInfo(Context.Server.MapPath(VirtualPathUtility.AppendTrailingSlash(result.Path) + fileItem.Name)); |
| // Add the information to the attributes collection of the item. It will be automatically picked up by the FileExplorer |
| // If the name attribute matches the unique name of a grid column |
| fileItem.Attributes.Add("Created Date", fInfo.CreationTime.ToString()); |
| fileItem.Attributes.Add("Modified Date", fInfo.CreationTime.ToString()); |
| // Type targetType = typeof(System.Security.Principal.NTAccount); |
| // string value = fInfo.GetAccessControl().GetOwner(targetType).Value.Replace("\\", "\\\\"); |
| //string ownerName = "Telerik"; |
| //fileItem.Attributes.Add("Owner", ownerName); |
| } |
| return result; |
| } |
I dont know where is Iam doing mistake ???
Please help ??
Ajay Jamwal

