Parent.FindControl() не работает?


1

У меня есть страница, которая имеет IFRAME

С одной из страниц в пределах фрейма, я хочу, чтобы оглянуться назад и сделать панель на странице по умолчанию невидимой, потому что она затмевает всплывающее окно

Я попытался с помощью Parent .FindControl, но он, похоже, не работает. Я уверен, что у меня есть правильный идентификатор в findcontrol, потому что я использовал Firebug для проверки панели, и я скопировал идентификатор оттуда

Кто-нибудь знает, что мне не хватает?

3

Я не полностью следил за вашей проблемой, но я сделаю свой лучший снимок.

Похоже, что у вас есть страница ASP.NET, в которой есть iframe, который ссылается на другую страницу ASP.NET, и на той странице, которая была запрошена iframe, которую вы хотите изменить видимость содержащегося элемента на странице, содержащей iframe.

Если мое понимание вашей проблемы верное, то у вас есть несколько неприятных проблем здесь.

  1. Что происходит на уровне браузера, первая страница загружается, и на этой странице есть iframe, который делает второй запрос на сервер.
  2. Этот второй запрос не может использовать элемент управления FindControl, потому что он не находится на одной странице и не является живым во время этого запроса.

Так у вас есть несколько вариантов здесь:

  1. избавиться от фрейма и использовать панель. Это поместит их в один и тот же запрос и сможет найти друг друга.
  2. (дополнительно) Когда вы это сделаете, вы захотите использовать функцию Page.FindControl() not Parent.FindControl(), поскольку метод FindControl просто выполняет поиск через контрольную коллекцию Control, и я полагаю, что ваш элемент управления будет где-то в другом месте на странице.
  3. На стороне клиента в iframe вы можете использовать код javascript для доступа к DOM внешней страницы и установить видимость этого там.

0

Для начала FindControl не является функцией в Javascript.

  0

это потому, что я использовал в коде позади 30 дек. 082008-12-30 16:49:13


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> 

документ внутри фрейма получает доступ к document object на window object на нагрузке, и использует функцию getElementId(), чтобы установить значение ввода внутри тела родительского документа.


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