2010-10-13 13 views
11

Mam stronę z kontrolkami Ajax Tab, w ramach jednej z kart jest webcontrol, który jako Telerik RadGrid, z Edit form wskazuje na inny kontroler sieci. Ten formularz edycyjny zawiera również zakładki Ajax, a na jednej z tych kart znajduje się modalne okienko Ajax z jeszcze innej funkcji webcontrol.Nie można znaleźć UpdatePanel o identyfikatorze "xxx". Jeśli jest on aktualizowany dynamicznie, to musi znajdować się wewnątrz innej UpdatePanel

Początkowy webcontrol działa poprawnie, gdy jest używany na swojej własnej stronie, ale formularz edycji nie pojawia się, gdy kontrolka jest używana w zakładkach Ajax zgodnie z potrzebami. Menedżer skryptów generuje następujący błąd:

Błąd środowiska wykonawczego Microsoft JScript: Sys.InvalidOperationException: Nie można znaleźć UpdatePanel o identyfikatorze "xxx". Jeśli jest aktualizowany dynamicznie, to musi znajdować się wewnątrz innego UpdatePanel.

Każda pomoc w tym zakresie byłaby doceniana.

+0

Napisz kod Proszę –

Odpowiedz

2

Aby rozpocząć rozwiązywanie problemów, osobiście spróbuję usunąć fragmenty kodu i w ten sposób wyznaczyć przyczynę błędu. Na przykład, usuń siatkę i dynamicznie załaduj kontrolkę użytkownika na karcie kliknij, aby zobaczyć, czy problem pozostaje, następnie usuń wewnętrzną kartę ajax lub modalne okienko wyskakujące i wykonaj kolejną kontrolę, itp.

1

Rozwiązałem problem, usuwając UpdatePanel na początkowej karcie, która zawierała WebControl. Nie wiem, dlaczego to spowodowało problem, więc jeśli ktoś może to wyjaśnić, byłbym zainteresowany.

Tak więc, na przykład, że pierwotnie miał to:

<cc1:TabContainer ID="TabContainer1" runat="server" ActiveTabIndex="0" OnClientActiveTabChanged="TabContainer1_OnChanged" Visible="true" > 
    <cc1:TabPanel runat="server" ID="TabPriorities"> 
      <HeaderTemplate>Manage Prioritys</HeaderTemplate> 
      <ContentTemplate> 
       <asp:UpdatePanel ID="UpdatePanelPriorities" runat="server" UpdateMode="Conditional"> 
        <ContentTemplate> 
         <uc1:PriorityGrid ID="PriorityGrid1" runat="server" /> 
        </ContentTemplate> 
       </asp:UpdatePanel> 
      </ContentTemplate> 
     </cc1:TabPanel> 

I zmienił go do:

<cc1:TabContainer ID="TabContainer1" runat="server" ActiveTabIndex="0" OnClientActiveTabChanged="TabContainer1_OnChanged" Visible="true" > 
    <cc1:TabPanel runat="server" ID="TabPriorities"> 
      <HeaderTemplate>Manage Prioritys</HeaderTemplate> 
      <ContentTemplate> 

         <uc1:PriorityGrid ID="PriorityGrid1" runat="server" /> 

      </ContentTemplate> 
     </cc1:TabPanel> 

I to rozwiązane błąd skryptu wychodzi kontroli użytkownika, która zawierała również karty ajax i modalne okno podręczne.

13

Ten problem występuje w programie Telerik RadAjaxManager po dodaniu do niego niewidocznych elementów sterujących.

W przypadku, gdy potrzebujesz pokazać/ukryć formanty AJAX, zaleca się dodanie gramatycznie ustawień AJAX z twojego kodu (na podstawie stanu widoczności kontroli) zamiast kodu ASPX.

Aby uzyskać więcej informacji: Please check this answer on the Telerik forums.

6

Dobrze Zastanawiam ten błąd nadchodzi w skrypcie. Jeśli wyświetlasz/ukrywasz panel aktualizacji, spowoduje to ten błąd. Najlepszym rozwiązaniem, które mi się udało, jest umieszczenie panelu aktualizacji w szablonie treści innego panelu aktualizacji, który będzie rodzicem panelu aktualizacji, który wyświetlasz/ukrywasz.

<asp:UpdatePanel ID="Panel1" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:UpdatePanel ID="Panel2" runat="server" UpdateMode="Conditional"> 
      <ContentTemplate> 
       <asp:Label ID="labwl1" runat="server" Text="Label"> 
       </asp:Label> 
      </ContentTemplate> 
     </asp:UpdatePanel > 
    </ContentTemplate> 
</asp:UpdatePanel > 

Teraz, jeśli będzie ukryć panel aktualizacja z id Panel2 nie da żadnego błędu.

2

W większości przypadków - Jeżeli kontener/macierzystego tego panelu aktualizacji jest trRow i masz gdzieś w kodzie jak trRow.Visible = false; potem nie znajdziesz powiedział UpdatePanel i rzucać błąd.

0

Może to być spowodowane przez niezamknięty tag lub brakujący tag końcowy.

1

To prawda, ja zmarnowałem 2 godziny, aby dowiedzieć się, dlaczego wszystkie nagłe moim kod przestał działać ...

okazało byłem nieco czyszczenia nieco zbyt dużo mojego rem” Kod ed się i wyjął zamykanie w moim panelu aktualizacji ...

<asp:UpdatePanel ID="submitupdatepanel" runat="server"> 
    <ContentTemplate> 
     <div class="block" style="height: 60px; width: 400px;"> 
      <div class="centered"> 
       <asp:LinkButton ID="submitbutton" runat="server" CssClass="button_red2 " Text=" <span>Submit </span>"> 
       </asp:LinkButton> 
       <asp:LinkButton ID="cancelbutton" runat="server" CssClass="button_gray2 " Text=" <span>Cancel</span>" Visible="false" OnClientClick="window.close()"> 
       </asp:LinkButton> 
      </div> 
      </ContentTemplate> 
</asp:UpdatePanel> 
<br /> 
<div style='display: none'> 
    <asp:UpdatePanel runat="server"> 
     <ContentTemplate> 
      <asp:PlaceHolder ID="myhiddenpopups2" runat="server" Visible="true"></asp:PlaceHolder> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
</div> 

który następnie dał ten sam błąd na ukrytej części Updatepanel poniżej.

Po Włożyłem brakuje powrotem, inni wrócili do normalnego stanu

<asp:UpdatePanel ID="submitupdatepanel" runat="server"> 
    <ContentTemplate> 
     <div class="block" style="height: 60px; width: 400px;"> 
      <div class="centered"> 
       <asp:LinkButton ID="submitbutton" runat="server" CssClass="button_red2 " Text=" <span>Submit </span>"> 
       </asp:LinkButton> 
       <asp:LinkButton ID="cancelbutton" runat="server" CssClass="button_gray2 " Text=" <span>Cancel</span>" Visible="false" OnClientClick="window.close()"> 
       </asp:LinkButton> 
      </div> 
     </div> 
    </ContentTemplate> 
</asp:UpdatePanel> 
<br /> 
<div style='display: none'> 
    <asp:UpdatePanel runat="server"> 
     <ContentTemplate> 
      <asp:PlaceHolder ID="myhiddenpopups2" runat="server" Visible="true"></asp:PlaceHolder> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
</div> 

nadzieję, że to pomaga na kogoś. K

0

Moja strona zawiera kilka odliczeń aktualizacyjnych. Naprawiłem ten błąd, upewniając się, że wszystkie były widoczne i nie wyświetlały się: brak.

Możesz dowiedzieć się, który panel powoduje błąd, wyświetlając źródło strony i szukając identyfikatora podanego przez błąd.

0

EDYCJA: Chciałbym poprawić moją odpowiedź na podstawie kilku nowych rzeczy, które odkryłem podczas pracy z panelami aktualizacji w UpdateMode = "Warunkowo".

Jest to nadal w kontekście adresowania problemu PO z powodu wystąpienia powyższego błędu.

Scenariusz dla mnie jest to, że mam panelu aktualizacji rodzica z kilku zagnieżdżonych paneli aktualizacji dziecko:

<asp:UpdatePanel ID="upParent" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <%-- Header Content --%> 
      <asp:UpdatePanel ID="upChild1" runat="server" UpdateMode="Conditional"> 
       <ContentTemplate> 
        <%-- Child1 Content --%> 
       </ContentTemplate> 
      </asp:UpdatePanel> 
      <asp:UpdatePanel ID="upChild2" runat="server" UpdateMode="Conditional"> 
       <ContentTemplate> 
        <%-- Child2 Content --%> 
       </ContentTemplate> 
      </asp:UpdatePanel> 
      <asp:Button ID="btnEditMode" runat="server" Text="Edit" OnClick="btnEditMode_Click"></asp:Button> 
     </ContentTemplate> 
    </asp:UpdatePanel> 

Aby przycisk Edytuj, aby zmienić treść w obu panelach aktualizacji dziecko, a także odświeżyć ogólną Parent panel zmiana nie powodując żadnych problemów, może warto rozważyć ten asynchronicznego odświeżenie strony:

<asp:UpdatePanel ID="upParent" runat="server" UpdateMode="Conditional"> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="btnEditMode" EventName="Click" /> 
     </Triggers> 
     <ContentTemplate> 
      <%-- Header Content --%> 
      <asp:UpdatePanel ID="upChild1" runat="server" UpdateMode="Conditional"> 
       <ContentTemplate> 
        <%-- Child1 Content --%> 
       </ContentTemplate> 
      </asp:UpdatePanel> 
      <asp:UpdatePanel ID="upChild2" runat="server" UpdateMode="Conditional"> 
       <ContentTemplate> 
        <%-- Child2 Content --%> 
       </ContentTemplate> 
      </asp:UpdatePanel> 
      <asp:Button ID="btnEditMode" runat="server" Text="Edit" OnClick="btnEditMode_Click"></asp:Button> 
     </ContentTemplate> 
    </asp:UpdatePanel> 

To działa na mnie, ja nie dostać wyżej wymieniony błąd (OP) dłużej. Co ciekawe, prawie jak w scenariuszu OP, pracowałem z Ajax Control Controls, a każda zakładka zawierała panele aktualizacji podrzędnych. W tym miejscu napotkałem dokładnie ten sam komunikat o błędzie i rozwiązałem go, dodając asynchroniczny mechanizm wyzwalania zwrotnego.

+0

Nie trzeba wspominać, musisz wywołać coś takiego jak upParent.Update() w module obsługi zdarzenia OnClick przycisku edycji, aby odświeżyć zawartość, ponieważ jest to tryb warunkowy. – Rafs