J'ai un problème où j'ai une page avec une case à cocher:Pourquoi mes événements ne sont pas enregistrés après la publication?
<asp:CheckBox runat="server" ID="chkSelectAll" OnCheckedChanged="chkSelectAll_CheckedChanged" EnableViewState="true" Text='<%# CommonFunctions.GetText(Page, "CreateTask", "chkSelectAll.text") %>' AutoPostBack="true" />
D'abord, j'ai eu le problème que lorsque l'événement a été soulevée la case à cocher ne tenait pas la valeur de la propriété vérifiée. Ceci est encore étrange car nulle part dans l'application, nous définissons EnableViewState sur false et par défaut, il devrait être vrai. Eh bien ce comportement a été corrigé en mettant EnableViewState = "true".
Alors maintenant, j'ai une case à cocher que lorsque je charge la page, wworks correctement. Je coche la case, l'événement est levé La valeur de la propriété Checked est bonne et la méthode est exécutée. La publication complète et affiche la page. Je coche la case à false, l'événement n'est pas déclenché et la page est rechargée avec les données précédentes mais la propriété Checked reste à true. Donc, après la première publication, je semble perdre le comportement de l'événement et ViewState.
Nous soupçonnons le fait que l'on passe dynamiquement les contrôles dans la page (Voir la réponse here)
Mais ce soupçon n'explique pas pourquoi tout fonctionne parfaitement après la première charge et cesse de fonctionner après la première publication.
EDIT
J'ai créé un projet de test où vous pourrez découvrir mon problème. Au chargement, si vous cochez une case, les deux lèvent leur événement respectif. Après la publication, seule la seconde relance les deux événements. Je semble avoir un problème quand j'inscris les événements après le déplacement du contrôle.
C'est un endroit vraiment mauvais pour mettre la logique. Il est courant d'initialiser la page dans un if (!IsPostBack), mais la partie else vous encourage simplement à placer votre code de gestion d'événements directement dans la méthode de chargement de la page. –
Non, le contrôle ne reçoit aucune donnée, la valeur par défaut est false, le texte est une donnée obligatoire, mais c'est du texte. Rien dans le pageload –
@Ben - Je comprends vos préoccupations. Je voulais montrer les deux chemins de code possibles au cas où le lecteur ne serait pas familier avec l'utilisation. –