Hi,
I have a page with a radTreeView and an ASP.NET ListView. I have added a RadScriptManager and a RadAjaxManager and wired the two controls so that a click on a TreeView node causes the ListView to be refreshed via partial page update.
I have a RadWindow that is used to upload new images to the server and is communicating to the page via the OnClientShow and ClientCallBackFunction properties.
When the RadWindow closes I wish the ListView to be updated as if the TreeView node had been clicked, showing an updated list.
My callback function is as follows:
The alert displays so I know the function is firing but nothing else seems to happen.
The full page is below, can anyone tell me why this is not working? What have I missed? Have I got the wrong objects?
I have a page with a radTreeView and an ASP.NET ListView. I have added a RadScriptManager and a RadAjaxManager and wired the two controls so that a click on a TreeView node causes the ListView to be refreshed via partial page update.
I have a RadWindow that is used to upload new images to the server and is communicating to the page via the OnClientShow and ClientCallBackFunction properties.
When the RadWindow closes I wish the ListView to be updated as if the TreeView node had been clicked, showing an updated list.
My callback function is as follows:
function UploadCallback(radWindow,returnValue) |
{ |
alert('radWindow callback!'); |
// Simulate RadTreeView click |
var ram = $find("<%= RadAjaxManager1.ClientID %>"); |
ram.ajaxRequestWithTarget("<%= rtvFolders.UniqueID %>",""); |
} |
The alert displays so I know the function is firing but nothing else seems to happen.
The full page is below, can anyone tell me why this is not working? What have I missed? Have I got the wrong objects?
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Test.aspx.vb" Inherits="Admin_Test" %> | |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |
<html xmlns="http://www.w3.org/1999/xhtml"> | |
<head runat="server"> | |
<title>Test Page</title> | |
<link href="../Styles/Hammertime.css" rel="stylesheet" type="text/css" /> | |
</head> | |
<body> | |
<form id="form1" runat="server"> | |
<div> | |
<p>Use this page to browse the images in the library</p> | |
<!-- Script and Ajax Managers --> | |
<telerik:RadScriptManager ID="RadScriptManager1" runat="server" EnablePageMethods="True" /> | |
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" meta:resourcekey="RadAjaxManagerResource1"> | |
<AjaxSettings> | |
<telerik:AjaxSetting AjaxControlID="rtvFolders" EventName="NodeClick"> | |
<UpdatedControls> | |
<telerik:AjaxUpdatedControl ControlID="lvFiles" /> | |
</UpdatedControls> | |
</telerik:AjaxSetting> | |
</AjaxSettings> | |
</telerik:RadAjaxManager> | |
<!-- Page layout with TreeView and ListView --> | |
<telerik:RadSplitter ID="RadSplitter1" runat="server" Width="99%" Height="500px" Skin="Telerik" Items-Capacity="4" meta:resourcekey="RadSplitter1Resource1" SplitBarsSize=""> | |
<telerik:RadPane ID="rpNavigation" runat="server" Width="200px" EnableEmbeddedBaseStylesheet="False" EnableEmbeddedSkins="False" Height="" Index="0" Skin=""> | |
<telerik:RadTreeView ID="rtvFolders" runat="server" CausesValidation="false" ValidationGroup="Folders"> | |
<WebServiceSettings Path="Images.aspx" Method="GetFolders" /> | |
<ExpandAnimation Duration="100" /> | |
<CollapseAnimation Duration="100" Type="OutQuint" /> | |
</telerik:RadTreeView> | |
</telerik:RadPane> | |
<telerik:RadSplitBar ID="rspNavigation" runat="server" EnableEmbeddedBaseStylesheet="False" EnableEmbeddedSkins="False" Index="1" Skin="" /> | |
<telerik:RadPane ID="rpFiles" runat="server" EnableEmbeddedBaseStylesheet="False" EnableEmbeddedSkins="False" Height="" Index="2" Skin="" Width=""> | |
<asp:ListView ID="lvFiles" runat="server" ItemPlaceholderID="phItemPlaceholder"> | |
<LayoutTemplate> | |
<asp:PlaceHolder ID="phItemPlaceholder" runat="server" /> | |
</LayoutTemplate> | |
<ItemTemplate> | |
<div class="imageThumbnail"> | |
<asp:PlaceHolder ID="phThumbnailImage" runat="server" /> | |
</div> | |
</ItemTemplate> | |
</asp:ListView> | |
</telerik:RadPane> | |
</telerik:RadSplitter> | |
<!-- ModalPopup panel image details --> | |
<asp:Panel ID="pnlImageDetail" runat="server" Style="display: none;" CssClass="modalPopup" meta:resourcekey="pnlImageDetailResource1"> | |
<div id="divImageDetailDragHandle" runat="server" class="modalPopupHeader"> | |
<div id="ImageDetailsCloseButton" runat="server" style="float: right; cursor: pointer;" title="Close this popup"> | |
[close]</div> | |
Image Details | |
</div> | |
<div id="divImageDetails" runat="server"> | |
</div> | |
</asp:Panel> | |
<asp:Button ID="btnDecoy" runat="server" Text="Decoy Button" Style="display: none;" meta:resourcekey="btnDecoyResource1" /> | |
<ajt:ModalPopupExtender ID="mpeImageDetail" runat="server" DynamicControlID="divImageDetails" DynamicServiceMethod="GetImageDetail" PopupControlID="pnlImageDetail" PopupDragHandleControlID="divImageDetailDragHandle" TargetControlID="btnDecoy" BackgroundCssClass="modalBackground" OkControlID="ImageDetailsCloseButton" DynamicServicePath="" Enabled="True" /> | |
<!-- Upload new image in radWindow --> | |
<input id="btnUploadImage" type="button" value="Upload New Image" /> | |
<telerik:RadWindow ID="rwUploadImage" runat="server" Behaviors="Close, Move, Resize" Height="350px" Modal="true" NavigateUrl="ImagesUpload.aspx" ClientCallBackFunction="UploadCallback" OnClientShow="OnUploadShow" OpenerElementID="btnUploadImage" ReloadOnShow="True" Skin="WebBlue" Title="Upload an Image" Width="600px" /> | |
</div> | |
<script type="text/javascript"> | |
function ShowImageDetail(imageId) | |
{ | |
var imgDetail = $find("<%= mpeImageDetail.ClientID %>"); | |
if (imgDetail) | |
{ | |
imgDetail.set_dynamicContextKey(imageId); | |
imgDetail.show(); | |
} | |
} | |
// Called when a radWindow is being shown. | |
function OnUploadShow(radWindow) | |
{ | |
// Get current value of treeview | |
var tv = $find("<%= rtvFolders.ClientID %>"); | |
var node = tv.get_selectedNode(); | |
if(node == null) | |
{ | |
radWindow.close(); | |
alert('Please select a folder'); | |
} | |
else | |
{ | |
var myLoc = node.get_value(); | |
// Create a new object to be used as an argument to the radWindow | |
var arg = new Object(); | |
arg.Location = myLoc; | |
//Set the argument object to the radWindow | |
radWindow.Argument = arg; | |
} | |
} | |
function UploadCallback(radWindow,returnValue) | |
{ | |
alert('radWindow callback!'); | |
// Simulate RadTreeView click | |
var ram = $find("<%= RadAjaxManager1.ClientID %>"); | |
ram.ajaxRequestWithTarget("<%= rtvFolders.UniqueID %>",""); | |
} | |
</script> | |
</form> | |
</body> | |
</html> | |
Imports System.IO | |
Imports Telerik.Web.UI | |
Partial Class Admin_Test | |
Inherits System.Web.UI.Page | |
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load | |
If Not IsPostBack Then | |
Dim app As New Application | |
'Initital load of folders. | |
Dim rootFolder As DirectoryInfo = app.ImagesRootFolder | |
Dim nodes As New List(Of RadTreeNode) | |
For Each d In rootFolder.GetDirectories | |
Dim n As New RadTreeNode | |
n.Text = d.Name | |
n.Value = d.FullName | |
If d.GetDirectories.Count > 0 Then | |
n.ExpandMode = TreeNodeExpandMode.WebService | |
End If | |
nodes.Add(n) | |
n = Nothing | |
Next | |
rtvFolders.Nodes.AddRange(nodes) | |
End If | |
End Sub | |
<System.Web.Services.WebMethod()> _ | |
<System.Web.Script.Services.ScriptMethod()> _ | |
Public Shared Function GetImageDetail(ByVal contextKey As String) As String | |
If IsNumeric(contextKey) Then | |
Dim i As New Attenda.Hammertime.Classes.Image(CInt(contextKey)) | |
Dim sb As New StringBuilder | |
sb.Append("<img src='../displayimage.aspx?iid=" & i.ID & "' alt='' title='' />") | |
sb.Append("<p>" & i.FigureTitle & "<br />") | |
sb.Append("Status: " & i.Status.ToString & "<br />") | |
sb.Append("Size: " & (i.Size / 1024).ToString("N") & "KB<br />") | |
sb.Append("Dimensions: " & i.Width & "x" & i.Height & "</p>") | |
Return sb.ToString | |
Else | |
Return ("<p>Details could not be found for image '" & contextKey & "'.</p>") | |
End If | |
End Function | |
<System.Web.Services.WebMethod()> _ | |
<System.Web.Script.Services.ScriptMethod()> _ | |
Public Shared Function GetFolders(ByVal node As RadTreeNodeData, ByVal context As Object) As RadTreeNodeData() | |
Dim parent As New DirectoryInfo(node.Value) | |
Dim results As New List(Of RadTreeNodeData) | |
For Each d In parent.GetDirectories | |
Dim rtnd As New RadTreeNodeData | |
rtnd.Text = d.Name | |
rtnd.Value = d.FullName | |
If d.GetDirectories.Count > 0 Then | |
rtnd.ExpandMode = TreeNodeExpandMode.WebService | |
End If | |
results.Add(rtnd) | |
Next | |
Return results.ToArray | |
End Function | |
Protected Sub rtvFolders_NodeClick(ByVal sender As Object, ByVal e As Telerik.Web.UI.RadTreeNodeEventArgs) Handles rtvFolders.NodeClick | |
Dim app As New Attenda.Hammertime.Classes.Application | |
Try | |
Dim rootUrl As String = app.ImagesRootURL | |
Dim images As New Attenda.Hammertime.Classes.Images(New DirectoryInfo(e.Node.Value)) | |
Dim imageData = From img As Attenda.Hammertime.Classes.Image In images _ | |
Select imageId = img.ID, _ | |
imageUrl = rootUrl & img.Location & "/" & img.ThumbnailImageName, _ | |
imageTitle = img.FigureTitle.Replace("'", "’") | |
lvFiles.DataSource = imageData | |
lvFiles.DataBind() | |
' Save current node to profile. | |
Profile.imageTreeNode = e.Node.Value | |
Catch ex As Exception | |
Attenda.Hammertime.Classes.Application.LogWarning(ex, Diagnostics.EventLogEntryType.Error) | |
Throw ex | |
Finally | |
app = Nothing | |
End Try | |
End Sub | |
Protected Sub lvFiles_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles lvFiles.ItemDataBound | |
If e.Item.ItemType = ListViewItemType.DataItem Then | |
Dim ph As PlaceHolder = CType(e.Item.FindControl("phThumbnailImage"), PlaceHolder) | |
Dim lvdi As ListViewDataItem = CType(e.Item, ListViewDataItem) | |
Dim dataitem = lvdi.DataItem | |
Dim img As New HtmlImage | |
img.Src = DataBinder.Eval(dataItem, "imageUrl") | |
img.Attributes.Add("title", DataBinder.Eval(dataItem, "imageTitle")) | |
img.Attributes.Add("onclick", "ShowImageDetail(" & DataBinder.Eval(dataItem, "imageID") & ")") | |
ph.Controls.Add(img) | |
End If | |
End Sub | |
End Class | |