Enregistrement réussi d'un datalist en tant que déclencheur de publication asynchrone

StackOverflow https://stackoverflow.com/questions/801381

  •  03-07-2019
  •  | 
  •  

Question

J'écris une petite application de tableau d'affichage et la plupart semble fonctionner jusqu'à présent. Cependant, j'ai essayé d'ajouter un panneau Ajax à la page d'affichage des avis et je ne parviens pas à le faire fonctionner.

Le site utilise une page maître avec trois régions de contenu définies qui, dans le cas de cette page, sont utilisées pour un filtre de notification, une liste de titres de notification (un dataliste renseigné dans l'événement Page.Load), et la avis affiché. Lorsque vous cliquez sur un titre, l’avis doit être chargé.

Le problème est que je souhaite que la notification actuellement affichée figure sur un panneau Ajax, mais que le déclencheur se trouve dans une région de contenu différente. J'ai placé un gestionnaire de script en dehors des espaces réservés de contenu sur la page principale et, sur la page aspx, un panneau de mise à jour autour du contenu situé dans la zone d'affichage de l'avis avec le déclencheur suivant:

<Triggers>
    <asp:AsyncPostBackTrigger ControlID="dlSelector" EventName="ItemCommand" />
</Triggers>

Et dans l'événement Page.Load, j'ai:

'Get the script manager first, and register the selector as a postback
Dim sm1 As ScriptManager = ScriptManager.GetCurrent(Page)
sm1.RegisterAsyncPostBackControl(dlSelector)

Cela compile et la partie de code semble fonctionner correctement, mais l'erreur "Un contrôle avec l'ID" dlSelector "est introuvable pour le déclencheur dans UpdatePanel" UpdatePanel1 "." Si je remplace

sm1.RegisterAsyncPostBackControl(dlSelector)

avec

sm1.RegisterAsyncPostBackControl(Page.FindControl("dlSelector"))

alors j'obtiens une erreur que FindControl a renvoyé la valeur null et qu'elle tombe à nouveau. Qu'est-ce que je fais mal?

Était-ce utile?

La solution

La page maître signifie que vos noms de contrôle auront été mutilés.
(par exemple, ct100_someotherstuff_nameOfControl), c’est pourquoi FindControl revient les mains vides. Vous devez enregistrer le contrôle de post-traitement en utilisant l'identifiant approprié du contrôle.

Lisez ceci dans Rick Strahl , il a été référencé dans la publication .

J'espère que ça aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top