Закрытие RadWindow с помощью RadButton - PullRequest
0 голосов
/ 13 января 2012

Я пытаюсь использовать RadButton, чтобы закрыть окно с самим окном (через 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.

Я что-то упустил?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 10 апреля 2012

Я не уверен, что я улучшаю этот ответ, я просто пытаюсь облегчить его понимание.У меня есть рад окно, которое открывается с главной страницы.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 (строка), "", "CloseDialog ();");

ИЛИ

VB ClientScript.RegisterStartupScript (Me.GetType (), "", "CloseDialog ();")

Если вам интересно, как открыть это окно из кода, вот как я это сделал:

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>

Это должно работать, если я допустил ошибку, пожалуйста, исправьте меня.

Спасибо

2 голосов
/ 13 января 2012

Способ вызова функции из 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, чтобы предотвратить обратную передачу.

...