2012-01-13 93 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