Закрытие Radwindow с использованием radbutton
-
27-10-2019 - |
Вопрос
Я пытаюсь использовать Radbutton, чтобы закрыть Radwindow с самим окном (через JavaScript). Можно ли вызвать сценарий, чтобы закрыть окно? Вот JavaScript:
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.
Я что-то упускаю?
Спасибо!
Решение
Способ вызвать функцию из 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, чтобы предотвратить отправку.
Другие советы
Я не уверен, улучшаю ли я этот ответ, я просто пытаюсь облегчить понять. У меня есть окно RAD, которое открывается с главной страницы. Radwindow открывается в коде (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), "," blosdialog (); ");
ИЛИ ЖЕ
VB ClientScript.RegisterStartUpScript (me.getType (), "", "blostialog ();")
Если вам интересно, как открыть Radwindow из CodeBehind вот как я это сделал:
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>
Это должно работать, если я допустил ошибку, пожалуйста, поправьте меня.
Спасибо