2012-01-13 2 views
0

Я пытаюсь использовать RadButton, чтобы закрыть radwindow из самого окна (через javascript). Можно ли вызвать скрипт, чтобы закрыть окно? Вот JavaScript:Закрытие RadWindow с помощью RadButton

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, без parenthese. 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 устанавливается в ложь, чтобы предотвратить постбэк.

3

Я не уверен, улучшаю ли я этот ответ, я просто пытаюсь понять его. У меня есть окно рада, которое открывается с главной страницы. Раздражение открыто в Code Behind (C#), а не в Javascript. Когда мой пользователь нажимает кнопку «Сохранить» в RadWindow, он выполняет некоторые логические задачи, а затем закрывает сам radwindow. Вам просто нужно:

Поместите ДАННОЙ блок кода в вас 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(); ");

ИЛИ

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 окно. –

Смежные вопросы