문제

iframe이있는 페이지가 있습니다

iframe 내 페이지 중 하나에서 팝업을 어둡게하기 때문에 기본 페이지의 패널을 보낼 수있는 패널을 만들고 싶습니다.

나는 parent.findcontrol을 사용하려고 시도했지만 작동하지 않는 것 같습니다. 파이어 버그를 사용하여 패널을 검사했고 여기에서 ID를 복사했기 때문에 FindControl에 올바른 ID를 가지고 있습니다.

내가 놓친 것이 무엇인지 아는 사람이 있습니까?

도움이 되었습니까?

해결책

나는 당신의 문제를 완전히 따르지 않았지만 최선을 다하겠습니다.

ASP.NET 페이지가있는 것처럼 들립니다. 다른 ASP.NET 페이지를 나타내는 iframe이 있으며 Iframe이 요청한 페이지에서 페이지에 포함 된 항목의 가시성을 수정하려는 페이지에서 iframe을 포함합니다.

당신의 문제에 대한 나의 이해가 정확하다면, 당신은 여기에 약간의 불쾌한 문제가 있습니다.

  1. 실제로 브라우저 레벨에서 일어나는 일은 첫 번째 페이지가로드되고 해당 페이지에는 iframe이있어 서버에 두 번째 요청을합니다.
  2. 이 두 번째 요청은 동일한 페이지에 있지 않으며 해당 요청 중에 살아 있지 않기 때문에 컨트롤을 통제 할 수 없습니다.

여기에는 몇 가지 대안이 있습니다.

  1. iframe을 제거하고 패널을 사용하십시오. 이것은 둘 다 같은 요청에 넣고 서로를 찾을 수있게 해줄 것입니다.
  2. (또한)이 작업을 수행 할 때 Page.FindControl ()가 아닌 PARIN.FINDCONTROL ()을 사용하려면 FindControl 메소드가 Control의 Child Control Collection을 통해 검색하면 Page의 다른 곳에 있다고 가정합니다. .
  3. iframe의 클라이언트 측에서 JavaScript 코드를 사용하여 OUTER PAGE의 DOM에 액세스하고 가시성을 설정할 수 있습니다.

다른 팁

학부모 문서 :

<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 objectwindow object 부하에 사용합니다 getElementId() 기능 부모 문서의 본문 내부에서 입력 값을 설정하는 기능.

우선, FindControl JavaScript의 함수가 아닙니다.

또는 여기에 더 유용한 찾기 컨트롤 루틴이 있습니다 ...

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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top