0

RadButton を使用して、ウィンドウ自体から (javascript を介して) radwindow を閉じようとしています。スクリプトを呼び出してウィンドウを閉じることはできますか? これが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.

何か不足していますか?

ありがとう!

4

2 に答える 2

3

この回答を改善しているかどうかはわかりませんが、理解しやすくしようとしているだけです。メインページから開く rad ウィンドウがあります。radwindow は Javascript ではなくコード ビハインド (C#) で開かれます。ユーザーが 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();")

codebehind から 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>

私が間違いを犯した場合、これは機能するはずです。修正してください。

ありがとう

于 2012-04-10T15:45:52.357 に答える
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 に設定されていることに注意してください。

于 2012-01-13T12:12:00.337 に答える