function addNewTab() { var tabstrip = $find('<%=RadTabStrip1.ClientID%>'); tabstrip.trackChanges(); var tab = new Telerik.Web.UI.RadTab(); tab.set_text("Root Tab 4"); tabstrip.get_tabs().add(tab); tabstrip.commitChanges(); var multiPage = $find("<%= RadMultiPage1.ClientID %>"); multiPage.trackChanges(); var pageView = new Telerik.Web.UI.RadPageView(); pageView.set_id("Page14"); pageView.set_contentUrl("<%=this.Page.ResolveUrl("~/page.aspx")%>"); pageView.set_selected(true); pageView.set_Height("100%"); // here i want to set height multiPage.get_pageViews().add(pageView); multiPage.commitChanges();}protected string GetDayOfWeek(string dateTimeString) { DateTime result = DateTime.Parse(dateTimeString); string dayOfWeek = Enum.GetName(typeof(DayOfWeek), result.DayOfWeek); return dayOfWeek; } protected string GetTimeOnly(string dateValue) { return System.DateTime.Parse(dateValue).ToString("hh:mm"); } protected string GetDateOnly(string dateValue) { return System.DateTime.Parse(dateValue).ToString("ddd, MMM d, yyyy"); }The virtual and physical paths are not shown in the FileExplorer. I cannot see any folders when running my solution. It is designed to allow clients to select a folder path from their local filesystem. Additionally, it needs to allow users to select a folder path from a initialpath on the server. I was able to create a custom content provider for both task after reviewing and modifying code found in this link, http://www.telerik.com/support/kb/aspnet-ajax/fileexplorer/details/use-radfileexplorer-with-physical-and-shared-folder-s-paths , to no avail.
From stepping through code during debugging, I am getting the paths from the MappingFile.mapping xml file and loading them into the initialPath and viewPath properties.
' Get physical and virtual path mappings to initialize the FileExplorer upon page load. This is a helper function ' of the ConfigureFileExplorer functionPublic Sub GetPhysicalVirtualPath() Dim configFile As New XmlDocument() Dim physicalPathToConfigFile As String = Context.Server.MapPath(Me.pathToConfigFile) configFile.Load(physicalPathToConfigFile) ' Load the configuration file Dim rootElement As XmlElement = configFile.DocumentElement Dim handlerPathSection As XmlNode = rootElement.GetElementsByTagName("genericHandlerPath")(0) ' get all mappings ; Me._itemHandlerPath = handlerPathSection.InnerText Me.mappedPathsInConfigFile = New Dictionary(Of String, String)() Dim mappingsSection As XmlNode = rootElement.GetElementsByTagName("Mappings")(0) ' get all mappings ; For Each mapping As XmlNode In mappingsSection.ChildNodes ' Get the appropriately categorized path, which is the InternalShare for ReceiveInternal and SendInternal operations Dim virtualPathAsNode As XmlNode = mapping.SelectSingleNode("VirtualPath") Dim physicalPathAsNode As XmlNode = mapping.SelectSingleNode("PhysicalPath") ' If neither string is empty, then If Not String.IsNullOrEmpty(virtualPathAsNode.InnerText) And Not String.IsNullOrEmpty(physicalPathAsNode.InnerText) Then ' Add all mappings to the list Me.mappedPathsInConfigFile.Add(PathHelper.RemoveEndingSlash(virtualPathAsNode.InnerText, "/"c), PathHelper.RemoveEndingSlash(physicalPathAsNode.InnerText, "\"c)) End If NextEnd Sub The server or client directory should be shown depending on the requested action (tab's ID) received from a hidden field on the client app. Please see the following:
Public Sub GetPhysicalVirtualPath() Dim configFile As New XmlDocument() Dim physicalPathToConfigFile As String = Context.Server.MapPath(Me.pathToConfigFile) configFile.Load(physicalPathToConfigFile) ' Load the configuration file Dim rootElement As XmlElement = configFile.DocumentElement Dim handlerPathSection As XmlNode = rootElement.GetElementsByTagName("genericHandlerPath")(0) ' get all mappings ; Me._itemHandlerPath = handlerPathSection.InnerText Me.mappedPathsInConfigFile = New Dictionary(Of String, String)() Dim mappingsSection As XmlNode = rootElement.GetElementsByTagName("Mappings")(0) ' get all mappings ; For Each mapping As XmlNode In mappingsSection.ChildNodes ' Get the appropriately categorized path, which is the InternalShare for ReceiveInternal and SendInternal operations Dim virtualPathAsNode As XmlNode = mapping.SelectSingleNode("VirtualPath") Dim physicalPathAsNode As XmlNode = mapping.SelectSingleNode("PhysicalPath") ' 2/20/14 - If neither string is empty, then If Not String.IsNullOrEmpty(virtualPathAsNode.InnerText) And Not String.IsNullOrEmpty(physicalPathAsNode.InnerText) Then ' Add all mappings to the list Me.mappedPathsInConfigFile.Add(PathHelper.RemoveEndingSlash(virtualPathAsNode.InnerText, "/"c), PathHelper.RemoveEndingSlash(physicalPathAsNode.InnerText, "\"c)) End If Next End Sub
Can you clarify how the CustomFileSystemProvider.vb file should be used? I used the example provided in the link above. However, I removed the file operations (move, delete, etc.) since I only need to select folders from the directory to build a path to return to the client that will be used for processing needs. Then I added the following extended provider to the end of my page's codepage:
Public Class ExtendedFileProviderInternal Inherits Telerik.Web.UI.Widgets.FileSystemContentProvider 'constructor must be present when overriding a base content provider class 'you can leave it empty Public Sub New(ByVal context As HttpContext, ByVal searchPatterns As String(), ByVal viewPaths As String(), ByVal uploadPaths As String(), ByVal deletePaths As String(), ByVal selectedUrl As String, _ ByVal selectedItemTag As String) MyBase.New(context, searchPatterns, viewPaths, uploadPaths, deletePaths, selectedUrl, selectedItemTag) End Sub Public Overloads Overrides Function ResolveDirectory(ByVal path As String) As Telerik.Web.UI.Widgets.DirectoryItem 'get the directory information Dim baseDirectory As Telerik.Web.UI.Widgets.DirectoryItem = MyBase.ResolveDirectory(path) 'remove files that we do not want to see Dim files As New System.Collections.Generic.List(Of Telerik.Web.UI.Widgets.FileItem)() Dim UnauthextWebConfig As String = System.Configuration.ConfigurationManager.AppSettings("UnAuthorizedFileExtensions") Dim INVALID_EXTENSIONS As String() = FileExts() For Each file As Telerik.Web.UI.Widgets.FileItem In baseDirectory.Files ' Get the file extension of the current file, the last element in the sequence Dim ext As String = file.Name.Split(New Char() {"."c}).Last ' For the Internal version of the file upload control, use this code ' along with the exclusion list in the webconfig to prevent script injection from .sql, .cs, .bat, .exe., .cmd, etc. If Not INVALID_EXTENSIONS.Contains(ext.ToLower()) Then files.Add(file) End If Next Dim newDirectory As New Telerik.Web.UI.Widgets.DirectoryItem(baseDirectory.Name, baseDirectory.Location, baseDirectory.FullPath, baseDirectory.Tag, baseDirectory.Permissions, files.ToArray(), _ baseDirectory.Directories) 'return the updated directory information Return newDirectory End Function ' This function gets the custom file extension exclusion list from the web.config/ApplicationSettings set by the app admins Function FileExts() As String() Dim extWebConfig As String = System.Configuration.ConfigurationManager.AppSettings("AllowedFileExtensions") Dim exts As String() = extWebConfig.Split(New Char() {","c}) ' If the count of extensions is not zero, then If (exts.Count = 0) Then exts(0) = ("undefined") End If ' Return the array Return exts End FunctionEnd Class| <formview id="test" runat="server" datasource="onesource"> |
| <EditItemTemplate> |
| <telerik:radpanelbar> |
| <items> |
| <telerik:RadPanelItem Text="1st bar" Expanded="true" > |
| <Items> |
| <telerik:RadPanelItem Value="clInfo" > |
| <ItemTemplate> |
| <asp:TextBox id="txt1st" runat="server" Text= '<%# Bind("Column1") %>' |
| <ItemTemplate> |
| </telerik:RadPanelItem> |
| </items> |
| </telerik:RadPanelItem> </items> |
| </telerik:radpanelbar> |
| </EditItemTemplate> |
| <InsertItemTemplate> |
| .... |
| .... |
| </InsertItemTemplate> |
| </formview> |
