1

iframe のあるページがあります

iframe内のページの1つから、ポップアップを覆い隠しているため、デフォルトページのパネルを振り返って非表示にしたい

Parent.FindControl を使用してみましたが、機能していないようです。Firebugを使用してパネルを検査し、そこからIDをコピーしたため、findcontrolに正しいIDがあると確信しています

誰かが私が欠けているものを知っていますか?

4

4 に答える 4

3

私はあなたの問題を完全には追っていませんが、最善を尽くします。

別のASP.NETページを参照するiframeを含むASP.NETページがあり、iframeによって要求されたそのページで、ページに含まれるアイテムの可視性を変更したいようですiframe が含まれています。

あなたの問題についての私の理解が正しければ、ここにはやや厄介な問題がいくつかあります。

  1. ブラウザー レベルで実際に起こっていることは、最初のページが読み込まれ、そのページにサーバーに 2 番目の要求を行う iframe が含まれていることです。
  2. この 2 番目の要求は、コントロールを FindControl できません。これは、同じページになく、その要求中はアクティブではないためです。

したがって、ここにいくつかの選択肢があります:

  1. iframe を取り除き、パネルを使用します。これにより、両方が同じリクエストに入れられ、お互いを見つけることができます。
  2. (さらに)これを行うときは、Parent.FindControl() ではなく Page.FindControl() を使用する必要があります。これは、FindControl メソッドがコントロールの子コントロール コレクションを検索するだけであり、コントロールがページの別の場所にあると推測されるためです。 .
  3. iframe のクライアント側では、JavaScript コードを使用して外側のページの DOM にアクセスし、そこで可視性を設定できます。
于 2008-09-23T21:40:22.027 に答える
2

親文書:

<body>
    <input type="text" id="accessme" value="Not Accessed" />
    ...
</body>

iframe 内のドキュメント:

<head>
    ...
    <script type="text/javascript">
        function setValueOfAccessme()
        {
            window.parent.document.getElementById("accessme").value = "Accessed";
        }
    </script>
</head>
<body onload="setValueOfAccessme();">
</body>

iframe 内のドキュメントは、ロード時に にアクセスし、関数を使用してdocument object、親ドキュメントの本文内の入力の値を設定します。window objectgetElementId()

于 2008-09-23T21:46:41.153 に答える
0

手始めに、FindControlはJavascriptの関数ではありません。

于 2008-09-23T21:14:21.357 に答える
0

あるいは、より便利な検索制御ルーチンがあります...

Public Shared Function MoreHelpfulFindControl(ByVal parent As UI.Control, ByVal id As String) As UI.Control
    If parent.ID = id Then Return parent
    For Each child As UI.Control In parent.Controls
        Dim recurse As UI.Control = MoreHelpfulFindControl(child, id)
        If recurse IsNot Nothing Then Return recurse
    Next
    Return Nothing
End Function
于 2008-09-23T21:50:42.703 に答える