I have ASP.Net pages with VB.Net as the code-behind.
The ASP.Net page for parent window has the RadScriptManager, a RadMenu, a RadTabStrip, and some buttons to open a different page in a RadWindow. Parent page also has the RadWindowManager.
The ASP.Net page opened in a RadWindow has a button on it to open another page in a RadWindow.
When I click on a button on the parent window, a RadWindow is opened up with a different page and a tab is added to the RadTabStrip on the parent window for the RadWindow. Then when I click on a button in the RadWindow which is the child to the parent window, another RadWindow is opened with another page but a tab is NOT created for this RadWindow on the RadTabStrip on the parent window.
Please see the attached screenshots. Note that in 3rd screenshot that there is no tab in RadTabStrip for 2nd RadWindow.
How to get the RadWindow opened from another RadWindow to show up as a tab on the RadTabStrip of the parent window?
Code of ASP.Net page for parent Window:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="TestRadWindowPage3.aspx.vb" Inherits="TestRadWindowPage3" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title> <link href="/Content/styles.css" rel="stylesheet" type="text/css" /> <style type="text/css"> html .RadMenu .rmLink, html .RadMenu .rmHorizontal .rmText { float: none; padding: 0; text-align: center; } .LineDiv1 { text-wrap:none; width: 740px; height: 172px; background-color: white; box-shadow: 10px 10px 5px #101010; } .LineDiv2 { text-wrap:none; text-indent:3px; width: 200px; height: 172px; background-color: white; box-shadow: 10px 10px 5px #101010; } .auto-style1 { width: 20px; } .auto-style2 { width: 740px; height: 162px; } </style> <script src="/Scripts/scripts.js" type="text/javascript"></script> <script type="text/javascript" src="/scripts/jquery.min.js"></script> <script type = "text/javascript" > function preventBack() { window.history.forward(); } setTimeout("preventBack()", 3); window.onunload = function () { null }; </script></head><body style="background-color: #3A4459"> <form id="form1" runat="server"> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> <Scripts> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js"> </asp:ScriptReference> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js"> </asp:ScriptReference> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js"> </asp:ScriptReference> </Scripts> </telerik:RadScriptManager> <telerik:RadMenu ID="RadMenu1" Runat="server" Width="960px" Style="z-index: 100"> <Items> <telerik:RadMenuItem runat="server" Font-Bold="True" Font-Size="14pt" NavigateUrl="CustomerPortal" Text="Home" Width="475px"> </telerik:RadMenuItem> <telerik:RadMenuItem runat="server" IsSeparator="True" Text="Sep"> </telerik:RadMenuItem> <telerik:RadMenuItem runat="server" Font-Bold="True" Font-Size="14pt" ForeColor="Red" Text="Logout" Width="475px"> </telerik:RadMenuItem> </Items> </telerik:RadMenu> <telerik:RadWindowManager ShowOnTopWhenMaximized="false" Skin="Web20" AutoSize="true" OnClientActivate="OnClientActivate" OnClientClose="OnClientClose" Behaviors="Close,Minimize,Move,Reload,Resize" OnClientCommand="OnClientCommand" ID="RadWindowManager1" RestrictionZoneID="RestrictionZone" runat="server" EnableShadow="true"> </telerik:RadWindowManager> <div class="winbar"> <telerik:RadTabStrip OnClientTabSelected="OnClientTabSelected" ID="RadTabStrip1" ScrollChildren="True" ScrollButtonsPosition="Middle" Height="24px" Width="960px" CssClass="taskbar" Orientation="HorizontalBottom" runat="server" Skin="WebBlue" OnClientLoad="tabStrip_load" SelectedIndex="0"> <Tabs> <telerik:RadTab Style="display: none;" Selected="True"></telerik:RadTab> </Tabs> </telerik:RadTabStrip> <div id="RestrictionZone" class="restrictionZone"> <br /> <br /> <br /> <asp:Button ID="Button1" Text="open first dialog 1" runat="server" OnClientClick="openChildDialog2('DowntimeHistoryInfo.aspx?CoilID=M999', 'DwntmeHist', 'Downtime History Info'); return false;" /> <br /> <br /> <button id="button2" onclick="openChildDialog2('DowntimeHistoryInfo.aspx?CoilID=M999', 'DwntmeHist', 'Downtime History Info'); return false;" runat="server">open first dialog 2</button> <br /> <br /> <telerik:RadButton ID="rbtnBL1CoilUptimeHistory" OnClientClicked="openNewWindow2" AutoPostBack="false" runat="server" Text="BL1 COIL UPTIME HISTORY" RenderMode="Classic" Font-Size="11pt"> </telerik:RadButton> </div> </div> <script type="text/javascript"> //this is the function that receives the data from the child popup and handles it on the current page function useDataFromChild(data) { document.getElementById("Textbox1").value = data; } </script> </form></body></html>VB.Net code-behind for parent Window:
Imports System.IOImports System.DrawingImports Telerik.Web.UIPartial Class TestRadWindowPage3 Inherits System.Web.UI.Page Private strErrorMsg As String Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init Try Dim strUser As String = "" Dim strDecUser As String = "" Dim strAppName As String = "IPMENUPRODUPTIMEVIEWER" If Request.IsAuthenticated Then If Not IsPostBack Then If Not Session("UserName") Is Nothing Then strUser = CType(Session("UserName"), String) strDecUser = DataEncryption.base64Decode(strUser) strDecUser = DataEncryption.base64Decode(strDecUser) strDecUser = DataEncryption.base64Decode(strDecUser) strUser = strDecUser End If If LoginValidation.IsValidAppAccess(strUser, strAppName) Then UserFunctions.UpdateAppActivity(strUser, strAppName) Else Response.Redirect("CustomerPortal") End If End If Else FormsAuthentication.RedirectToLoginPage() End If Catch ex As Exception strErrorMsg = "Procedure: Page_Init - TestRadWindowPage3" & vbCrLf & "Error Message: " & ex.Message & vbCrLf & "Source: " & ex.Source UserFunctions.UserMsgBox(Me, strErrorMsg) End Try End Sub Protected Sub RadMenu1_ItemClick(sender As Object, e As RadMenuEventArgs) Handles RadMenu1.ItemClick Try Dim currentItem As RadMenuItem = RadMenu1.FindItemByText("Logout") If Not currentItem Is Nothing Then If currentItem.Selected Then LoginValidation.LogoutUser() End If End If Catch ex As Exception strErrorMsg = "Procedure: RadMenu1_ItemClick - TestRadWindowPage3" & vbCrLf & "Error Message: " & ex.Message & vbCrLf & "Source: " & ex.Source UserFunctions.UserMsgBox(Me, strErrorMsg) End Try End SubEnd ClassCode of ASP.Net page opened in a RadWindow from parent Window:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="DowntimeHistoryInfo.aspx.vb" Inherits="DowntimeHistoryInfo" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="/Scripts/scripts.js" type="text/javascript"></script>
</head>
<body style="background-color: #3A4459">
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" ForeColor="White" Text="Downtime History Info"></asp:Label>
<br /><br />
<asp:Label ID="Label2" runat="server" ForeColor="White"></asp:Label>
<br />
<br />
<br />
<asp:Button ID="Button1" Text="open second dialog" runat="server"
OnClientClick="openChildDialog2('second.aspx', 'secondDialog', 'Second Dialog'); return false;" />
<br />
<asp:TextBox ID="Textbox1" runat="server" />
<asp:Button ID="Button2" Text="send data to main form" runat="server"
OnClientClick="generateDataForParent(); return false;" />
<script type="text/javascript">
//this is the function that receives the data from the child popup and handles it on the current page
function useDataFromChild(data) {
document.getElementById("Textbox1").value = data;
}
//each page needs to define such a function
function generateDataForParent() {
var info = document.getElementById("Textbox1").value;
sendDataToParent(info);
}
</script>
</div>
</form>
</body>
</html>
VB.Net code-behind for first RadWindow:
Partial Class DowntimeHistoryInfo Inherits System.Web.UI.Page Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load Label2.Text = "Coil ID = " & UCase(Request.QueryString("CoilID")) End SubEnd ClassCode of ASP.Net page opened in a RadWindow from first RadWindow:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Second.aspx.vb" Inherits="Second" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Text="Second Window"></asp:Label> </div> </form></body></html>Javascript code for scripts.js:
(function (global, undefined) { var tabStrip; function tabStrip_load(sender, args) { tabStrip = sender; } //opening the window function openNewWindow(sender, args) { //var item = args.get_item(); //var itemUrl = item.get_value(); //var itemText = item.get_text(); //if (itemUrl) { //} var btnID = sender.get_id(); var wrkctr = btnID.substr(4, 3); //var oWnd = radopen(itemUrl, null); //var oWnd = radopen("CoilUptimeHistory.aspx?WRKCTR=" + wrkctr, null, 825, 850); var oWnd = radopen("CoilUptimeHistory.aspx?WRKCTR=" + wrkctr, null); //var oWnd = GetRadWindowManager().open("CoilUptimeHistory.aspx?WRKCTR=" + wrkctr, null); //oWnd.set_title(itemText); oWnd.set_title(wrkctr + ' Coil Uptime History'); oWnd.center(); tabStrip.trackChanges(); //create a new tab var tab = new Telerik.Web.UI.RadTab(); //set the text of the tab //tab.set_text(itemText); tab.set_text(wrkctr + ' Coil Uptime History'); oWnd.correspondingTab = tab; //tab.set_imageUrl(item.get_imageUrl()); //add the tab to the tabstrip tabStrip.get_tabs().add(tab); tabStrip.repaint(); tab.correspondingWnd = oWnd; tabStrip.commitChanges(); //Select this tab tab.select(); } //opening the window function openNewWindow2(sender, args) { var btnID = sender.get_id(); var wrkctr = btnID.substr(4, 3); //var oWnd = radopen("CoilUptimeHistory.aspx?WRKCTR=" + wrkctr, null); var oWnd = radopen("DowntimeHistoryInfo.aspx?CoilID=M99988", null); oWnd.set_title(wrkctr + ' Coil Uptime History'); oWnd.center(); tabStrip.trackChanges(); //create a new tab var tab = new Telerik.Web.UI.RadTab(); //set the text of the tab tab.set_text(wrkctr + ' Coil Uptime History'); oWnd.correspondingTab = tab; //add the tab to the tabstrip tabStrip.get_tabs().add(tab); tabStrip.repaint(); tab.correspondingWnd = oWnd; tabStrip.commitChanges(); //Select this tab tab.select(); } function openChildDialog2(url, wndName, title) { //in case of erroneous arguments, add some error handling and prevention if (!url) url = "errorPage.aspx"; if (!wndName) wndName = "popup_" + Math.random(); var currentWnd = GetRadWindow(); var browserWnd = window; if (currentWnd) browserWnd = currentWnd.BrowserWindow; setTimeout(function () { //var wnd = browserWnd.radopen(url, wndName); var wnd = browserWnd.radopen(url, null); wnd.__parentBackReference = window; //pass the current window object of the page that opens the dialog so it can be used later wnd.center(); if (title) wnd.set_title(title); //you can pass more parameters for RadWindow settings, e.g., modality, dimensions, etc. //you can even add arguments that will pass data from the parent to the child as shown here //in the On the Dialog Page section that shows how to access custom fields in the RadWindow object and use them. //of course, you can also use querystrings in the URL. tabStrip.trackChanges(); //create a new tab var tab = new Telerik.Web.UI.RadTab(); //set the text of the tab tab.set_text(title); wnd.correspondingTab = tab; //add the tab to the tabstrip tabStrip.get_tabs().add(tab); tabStrip.repaint(); tab.correspondingWnd = wnd; tabStrip.commitChanges(); //Select this tab tab.select(); }, 0); } function GetRadWindow() { var oWindow = null; if (window.radWindow) oWindow = window.radWindow; else if (window.frameElement && window.frameElement.radWindow) oWindow = window.frameElement.radWindow; return oWindow; } function OnClientCommand(sender, args) { //because we don't want to show the minimized RadWindow, we hide it after minimizing //and raise the _Maximized flag (used in OnClientTabSelected) if (args.get_commandName() == "Minimize") { if (sender.isMaximized()) { sender._Maximized = true; } sender.hide(); //raise the _toMinimize flag (used in OnClientActivate) sender._toMinimize = true; var tab = sender.correspondingTab; if (tab) { tab.set_selected(false); } } } function OnClientTabSelected(sender, args) { //get a reference to the corresponding window var win = args.get_tab().correspondingWnd; if (!win) return; if (!win.isVisible()) { win.show(); win.restore(); //if the window was maximized before client minimizes it, we need to restore //its maximized state if (win._Maximized) { win.maximize(); win._Maximized = null; } } setTimeout(function () { win.setActive(true); }, 0); } function OnClientActivate(sender, args) { var tab = sender.correspondingTab; if (tab && !sender._toMinimize) { tab.set_selected(true); } sender._toMinimize = false; //maximized RadWindows do not update their z-index OOB if (sender.isMaximized()) { increaseZindex(sender); } } function OnClientClose(oWnd) { //remove the corresponding tab from the tabstrip var tab = oWnd.correspondingTab; if (tab) { tabStrip.trackChanges(); tabStrip.get_tabs().remove(tab); tabStrip.commitChanges(); } } function increaseZindex(wnd) { var currZIndex = wnd.get_zindex(); var zIndexToSet = Telerik.Web.UI.RadWindowUtils.get_newZindex(currZIndex); wnd.get_popupElement().style.zIndex = zIndexToSet; } global.tabStrip_load = tabStrip_load; global.OnClientClose = OnClientClose; global.OnClientActivate = OnClientActivate; global.OnClientTabSelected = OnClientTabSelected; global.OnClientCommand = OnClientCommand; global.openNewWindow = openNewWindow; global.openNewWindow2 = openNewWindow2; global.openChildDialog2 = openChildDialog2;})(window);CSS code for styles.css:
div#main { z-index: auto;/* reset z-index so that the Menu stays on top of the opening Windows */}.demo-container{ width: 880px;}.restrictionZone{ width: 1067px; height: 913px;}.taskbar{ display: block; /*float: left;*/}.winbar{ /*width: 781px;*/ width: 960px; /*height: 463px;*/ height: 463px; /*padding: 30px 33px 85px 34px;*/ padding: 0px 0px 0px 0px; /*background-image: url('/images/monitor.jpg');*/ background-image: url('/images/taskbar5.jpg'); background-repeat: no-repeat; /*margin: 15px 0 0 15px;*/}div.RadTabStrip .rtsLevel{ width: auto;}