0

マスターページを含むASP.NETWebアプリケーションがあります。マスターページにはコンテンツページが含まれています。コンテンツページにはユーザーコントロールが含まれています。ユーザーコントロールには、コンテキストメニューを備えたTelerikグリッドが含まれています。

グリッドのコンテキストメニューの項目をクリックして、新しいポップアップモーダルウィンドウを開きたいのですが。そのウィンドウにドロップダウンリストがあります。ドロップダウンリストからいくつかのオプションを選択し、[OK]をクリックします。ドロップダウンリストから選択した値を取得し、ASP.NETコードで使用して先に進みたいのですが。

ドロップダウンリストの値を格納するために非表示フィールドを使用しようとしましたが、非表示フィールドを配置する場所がわからないため、機能しません。

これは私のコードです:

ポップアップウィンドウを開く:

function ClientItemClicked(sender, eventArgs)
{
    if (eventArgs.get_item().get_value() == "excel")
    {
        var retVal = window.showModalDialog("ExportToExcelChoice.aspx", null, "dialogWidth: 400; dialogHeight: 200; center: yes; resizable: no;");
    }
}

「OK」をクリックしてポップアップウィンドウを閉じます。

function ReturnValue() {
    var choice = document.getElementById("DropDownList1").value;
    if ((window.opener != null) && (!window.opener.closed)) {
        window.opener.document.getElementById("HiddenField1").value = choice;
    }
    window.close();
}

この行では失敗します:

window.opener.document.getElementById("HiddenField1").value = choice;

非表示フィールドはユーザーコントロールに配置され、コードは非表示フィールドへの参照を取得できないためです。

誰かが私がそれを機能させるのを手伝ってもらえますか?

4

2 に答える 2

0

window.open() を使用している場合は、プロパティ window.opener を介して親ウィンドウを確認できます。これにより、親ページとポップアップの間で通信できます。

window.showModalDialog() を使用している場合は、この質問に対する 2 番目の回答を参照してください: window.opener の代替手段

于 2013-02-13T08:22:42.143 に答える
0

これを試して

window.opener.document.getElementById('<%= HiddenField1.ClientID %>').value = choice;
于 2013-02-13T09:22:22.223 に答える