2012-01-13 69 views
0

我正在嘗試使用RadButton從窗口本身(通過javascript)關閉一個radwindow。是否可以調用腳本來關閉窗口?這裏是JavaScript:使用RadButton關閉RadWindow

function getRadWindow() 
{ 
    var oWindow = null; 
    if (window.radWindow) oWindow = window.radWindow; 
    else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow; 
    return oWindow; 
} 

function closeWindow() 
{ 
    getRadWindow().close(); 
} 

這裏是按鈕:

<telerik:RadButton ID="CancelButton" runat="server" OnClick="closeWindow();" CssClass="clicker" Text="Cancel" UseSubmitBehavior="False" EnableEmbeddedScripts="false" CausesValidation="False" RegisterWithScriptManager="False"> 
</telerik:RadButton> 

我已經嘗試了一切,該腳本將只工作,如果我使用的是純HTML元素,如錨標記。如果我使用OnClick事件,當窗口打開時出現以下錯誤:Compiler Error Message: CS1026:) expected.

我錯過了什麼嗎?

謝謝!

回答

2

從RadButton調用函數的方法是使用OnClientClicked或OnClientClicking事件。然後,您只需傳遞JavaScript函數的名稱,而無需使用括號。 OnClick是服務器處理程序的屬性,對於常規的asp按鈕也是如此。試試這個:

<telerik:RadButton ID="CancelButton" runat="server" OnClientClicked="closeWindow" AutoPostBack="false" CssClass="clicker" Text="Cancel" UseSubmitBehavior="False" EnableEmbeddedScripts="false" CausesValidation="False" RegisterWithScriptManager="False"> 

注AutoPostBack屬性設置爲false,以防止回發。

3

我不確定如果我正在改進這個答案,我只是想讓它更容易理解。我有一個從主頁面打開的弧形窗口。 Radwindow在Code Behind(C#)中打開,而不是Javascript。當我的用戶點擊RadWindow上的Save按鈕時,它執行一些邏輯任務,然後關閉Radwindow本身。你只需要:

將thise代碼塊你RadWindow ASPX .....

<telerik:RadCodeBlock runat="server" ID="rcb1"> 
<script language="javascript" type="text/javascript"> 

function GetRadWindow() 
{ 
var oWindow = null; 
if (window.radWindow) oWindow = window.radWindow; 
else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow; 
return oWindow; 
} 
function CloseDialog(button) 
{ 
GetRadWindow().close(); 
} 

</script> 
</telerik:RadCodeBlock> 

將這個代碼在你RadWindow的按鈕,點擊您開展前關閉邏輯(同一個按鈕後執行另一個邏輯關閉窗口)

C# ClientScript.RegisterStartupScript(typeof(string),「」,「CloseDialog();」);

OR

VB ClientScript.RegisterStartupScript(Me.GetType(), 「」, 「CloseDialog();」)

如果你想知道如何從代碼隱藏打開radwindow這裏是如何我做到了:

RadWindow window1 = new RadWindow(); 
// Set the window properties 
window1.NavigateUrl = "winStrengthChart.aspx?EMPLOYIDNAME=" + parmString; 
window1.ID = "RadWindow1"; 
window1.Width = 800; 
window1.Height = 650; 
window1.VisibleStatusbar = false; 
window1.Behaviors = Telerik.Web.UI.WindowBehaviors.Close | Telerik.Web.UI.WindowBehaviors.Resize | Telerik.Web.UI.WindowBehaviors.Move; 
window1.VisibleOnPageLoad = true; // Set this property to True for showing window from code 
rwm1.Windows.Add(window1); 
this.Form1.Controls.Add(window1); 

...當然,你需要打開的窗口中主要頁面上的基本RadWindowManager:

<telerik:RadWindowManager ID="rwm1" runat="server"> 
<Windows> 
</Windows> 
</telerik:RadWindowManager> 

這應該工作,如果我犯了一個錯誤,請糾正我。

感謝

+0

'當然你需要打開的窗口中主要頁面上的基本RadWindowManager:' RadWindowManager是沒有必要的,除非我們有更多的則1個窗口。 – 2015-04-23 09:27:55