Je montre un modalpopupextender en utilisant javascript, et quand je clique sur son bouton de sauvegarde, il enregistre les choses que j'ai saisies, et (comme son un bouton) postsback automatiquement afin que la page se rafraîchit .Mystérieux problèmes de publication avec javascript (asp.net)
Cependant quand il se rafraîchit, j'obtiens une erreur parce qu'il dit que le contrôle de case à cocher que je définis sur ma page aspx est nul. L'une des premières choses que je fais quand la page se charge est de créer du javascript et de fournir différents ID clients pour mes composants, et le dernier à ajouter est chkFullyBooked.ClientID.
Lorsque la page est chargée la première fois, c'est correct, mais après l'avoir affichée, elle indique que ma case est null. Un autre problème est que dans ma fonction de bouton de sauvegarde, alors qu'il peut récupérer la valeur des zones de texte et la case à cocher dans le code, il ne peut pas obtenir le texte des étiquettes qui ont changé ... textboxes cependant.
Je n'arrive pas à comprendre la raison pour laquelle le contrôle case à cocher (codé en dur dans ma page avec d'autres zones de texte) reviendrait à zéro sur une actualisation de page.
code en haut de ma page ASPX:
<% Response.Write("<script language='javascript' type='text/javascript'>" +
"function DisplayModalPopup(dateCreated, note, editedBy, fullybooked) {" +
"var modalDialog = $find('AddressErrorPopup');" +
"document.getElementById('" + txtNote.ClientID + "').value = note;" +
"if (modalDialog != null) { modalDialog.show(); }" +
"var lblLastEditBy = document.getElementById('" + txtLastEditBy.ClientID + "');" +
"lblLastEditBy.value = editedBy;" +
"var lblDateCreated = document.getElementById('" + txtTallyBoardEntryDate.ClientID + "');" +
"lblDateCreated.value = dateCreated;" +
"var fullyBooked = document.getElementById('" + chkFullyBooked.ClientID + "');" +
"fullyBooked.value = fullybooked;" +
"} " +
"</script>"); %>
Plus tard dans mon code, un extrait:
.
.
.
<tr>
<td colspan="2" style="text-align:left">Last Edit by - <asp:TextBox ID="txtLastEditBy" ReadOnly="true" runat="server"></asp:TextBox></td>
</tr>
<tr><td colspan="2" style="text-align:left"><asp:CheckBox runat="server" ID="chkFullyBooked" Text="Fully Booked?" Checked="false"/></td></tr>
.
.
.
Edit: Bien sûr, cela signifie que je reçois une exception de référence null sur la code ci-dessus car il ne peut pas accéder à ClientID.
Edit: Comme solution de merde je l'ai fait response.redirect (request.url.tostring) au lieu de laisser le bouton postback lui-même, et cela pour une raison godforsaken fonctionne très bien ..
Cela a du sens pour conserver les valeurs, mais le problème ici est que la case à cocher elle-même revient comme nulle ... comme si le contrôle n'existe pas, ce qui est impossible ... – NibblyPig