Nawet próbując znaleźć odpowiedź na ten problem, nie znalazłem żadnego wyraźnego wyjaśnienia (zwłaszcza jeden nie omawiając GridViews) o tym, jak rozwiązać następujący błąd I otrzymane podczas uruchamiania programu z UpdatePanel:Implementacja interfejsu INamingContainer dla UpdatePanel?
Message: Control with ID 'lblDisplay' being registered through RegisterAsyncPostBackControl or RegisterPostBackControl must implement either INamingContainer, IPostBackDataHandler, or IPostBackEventHandler.
UpdatePanel jest:
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>
<asp:UpdatePanel ID="up1" UpdateMode="Conditional" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="lblDisplay" eventname="Load" />
</Triggers>
<ContentTemplate>
<asp:HiddenField ID="hiddenZone" runat="server" />
<asp:HiddenField ID="hiddenZone2" runat="server" />
<div style='width: 150px;position:absolute; margin-left: 0;text-align:center;'>
<span id="clock" style='font-size:125%;'></span>
<asp:Label ID="lblDisplay" runat="server" Text=""></asp:Label></div>
<div style='width:150px;position:absolute;margin-left:150px;text-align:center;text-transform:capitalize;'>
<asp:Label ID="lblDisplay2" runat="server" Text="" Interval="5000" ontick="tick"></asp:Label>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</form>
z mojego zrozumienia, muszę zaimplementować interfejs INamingContainer dla lblDisplay, ale nie jestem pewien, w jaki sposób tego dokonać. Czy muszę podawać databind informacje UpdatePanel? Utwórz nowy obiekt dla INamingContainer?
Mój UpdatePanel nie powinien otrzymywać żadnych danych wejściowych od użytkownika. Jedyna akcja ma miejsce w lblDisplay2, z jego zdarzeniem ontick. Panel powinien po prostu odświeżyć po wydarzeniach na serwerze nowe informacje. Jeśli lblDisplay nie wysyła niczego z powrotem, jaka jest alternatywa dla osiągnięcia tego? – LoganFrederick
Konto @ Logan Label nie ma zdarzenia OnTick ... czy próbujesz użyć kontrolki Timer? Jeśli tak, to kontrola powinna być Twoją PostBackTrigger, a nie etykietą. Etykiety nie wywołują zdarzeń odświeżenia - to zdarzenie po stronie klienta. Etykiety są zapisywane tylko z serwera. –
Tak, próbuję użyć kontrolki licznika czasu i rozumiem zdarzenia po stronie serwera w języku C#, ale nie bardzo rozumiem, jak to komunikuje i jest inicjowana po stronie klienta w ASP. To prawdopodobnie prowadzi do oddzielnego pytania niż pierwotnego. – LoganFrederick