2

ボタン クリック イベントから radWindow で Web ページを開く必要があります。クライアント側からこれを実行しようとしましたが、表示されてすぐに消えます。ボタンのクリックがサーバーへのポストバックを引き起こしていると思います... したがって、現在、以下に投稿されたサーバー側のコード (C#) を使用してこの問題を解決しようとしています。

問題: ウィンドウ コレクションに追加せずに rad ウィンドウを開くか、閉じるときにウィンドウ コレクションから削除する必要があります。これらは、rad ウィンドウを閉じるときにウィンドウ コレクションから削除されません。これにより、新しいボタンが押された回数だけ同じウィンドウが開きます。最初のクリックで 1 つのウィンドウが開き、2 回目に新しいボタンをクリックすると 2 つのウィンドウが開きます。

C# - 複数のページを開く

    RadWindow newWindow = new RadWindow();
    newWindow.NavigateUrl = "WebPage.aspx";
    newWindow.Top = Unit.Pixel(22);
    newWindow.VisibleOnPageLoad = true;
    newWindow.Modal = true;
    newWindow.Left = Unit.Pixel(0);
    newWindow.Height = 530;
    newWindow.Width = 1000;
    winMgr.Windows.Add(newWindow);

JavaScript - ポストバックの問題? ページが開き、すぐに消えます。

    var oManager = '<%=winMgr.ClientID %>';
    var oManager = window.radopen("WebPage.aspx", null);
    oManager.setSize(1000, 530); //Width, Height
    oManager.center();
    oManager.SetActive();

ご協力いただきありがとうございます!

4

3 に答える 3

3

アリソンの解決策によると、ボタンをクリックするとradウィンドウが表示されます。しかし、すぐにまた消えます。以下のコードを使用してみました。私の場合は正常に動作しています。

<script type="text/javascript">
    function openRadWin()
    {
        radopen("http://www.google.com", "RadWindow1");
    }
</script>
<asp:Button ID="Button1" Text="Show Window" runat="server" OnClientClick="openRadWin();"  />

うまくいけば、それは誰かに役立つでしょう。

于 2011-12-15T03:07:47.080 に答える
2

ボタンをクリックした後、false を返す必要があります。

ボタン/JavaScript を次のように設定してみてください。

ボタン (aspx)

<asp:Button ID="btnDoSomething" runat="server" Text="Do Something" OnClientClick="return myFunction();" />

JavaScript

function myFunction() {
    var oManager = window.radopen("WebPage.aspx", null);
    oManager.setSize(1000, 530); //Width, Height
    oManager.center();
    oManager.SetActive();
    return false;
}
于 2011-05-16T16:23:07.813 に答える
2

最初に - 基本 :) RadWindow をクライアント (JavaScript 経由) で開くか、サーバーで開きますか?

ケース 1 - クライアントの場合:アリソンの言うとおりです。クライアントで RadWindow を開きたい場合 (そして、そのポストバック要素にフックされたサーバー側イベントがない場合)、ポストバックをキャンセルする必要があります。これは、 OnClientClick="return myFunction();"を使用して行われます。および " return false; " 関数自体の最後に (アリソンが提案したように)、または:

OnClientClick="myFynction(); false を返す;"

クライアントのクリックがキャンセルされた場合、ポストバックはありません。

ケース 2 - サーバー上: VisibleOnPageLoadtrueに設定すると、サーバーから RadWindow が表示されます。ただし、RadWindow / RadWindowManager は、VisibleOnPageLoad を含むすべてのサーバー側プロパティを含む、ポストバック間で状態を保持することに注意してください。そうは言っても、RadWindow を一度だけ表示したい場合は、使用している RadWindowManager に対して EnableViewState=false を設定する必要もあります。

于 2011-05-17T06:48:43.133 に答える