Si vous avez le balisage ci-dessous.AutoPostBack sur le contrôle CheckBox échoue parfois
<asp:checkbox id="chkTVLic" runat="server" text="TV Licence" oncheckedchanged="chkDocs_CheckChanged"
autopostback="true" CausesValidation="false" />
<asp:panel id="pnlTVLic" runat="server" visible="false">
<div class="toggle-item-link1 document-date">
<asp:panel id="pnlTVLicIssueDate" runat="server">
<p>
Please enter the date of issue
</p>
<div class="fm-req">
<asp:textbox id="txtTVLicIssueDate" cssclass="tb size2" runat="server" onblur="return true;"></asp:textbox>
<cc2:calendarextender id="caleTVLicIssueDate" runat="server" targetcontrolid="txtTVLicIssueDate"
popupbuttonid="ibnTVLicIssueDate" popupposition="BottomLeft" animated="true"
format="dd/MM/yyyy">
</cc2:calendarextender>
<asp:imagebutton id="ibnTVLicIssueDate" runat="server" imageurl="../images/img-calendar-day.png"
alternatetext="Calendar" tooltip="Pick Date" cssclass="date-picker" />
<asp:requiredfieldvalidator id="rfvTVLicIssueDate" CssClass="error" runat="server" controltovalidate="txtTVLicIssueDate"
display="Dynamic" errormessage="Required" setfocusonerror="true" validationgroup="TVLic"></asp:requiredfieldvalidator>
<asp:comparevalidator id="cmvTVLicIssueDate" CssClass="error" runat="server" errormessage="Not a valid date"
controltovalidate="txtTVLicIssueDate" operator="DataTypeCheck" type="Date" setfocusonerror="true"
validationgroup="TVLic" display="Dynamic" cultureinvariantvalues="true"></asp:comparevalidator>
<asp:customvalidator id="cuvTVLicIssueDate12Months" CssClass="error" runat="server" controltovalidate="txtTVLicIssueDate"
validationgroup="TVLic" display="Dynamic" onservervalidate="cuvDocIssueDate12Months_ServerValidate"
errormessage="Document must be less than 12 months old."></asp:customvalidator>
</div>
</asp:panel>
<asp:panel id="pnlTVLicApprove" runat="server">
<asp:LinkButton id="lbnTVLicApprove" runat="server" CssClass="screen-hide"
alternatetext="Confirm TV Licence" tooltip="Confirm TV Licence" Text="OK" CausesValidation="false" OnClick="lbnApproveConfirm_Click" />
<asp:imagebutton id="ibnTVLicApprove" runat="server" imageurl="../images/img-accept-doc-off.png"
alternatetext="Approve" tooltip="Approve" cssclass="approval-btn" causesvalidation="true" validationgroup="TVLic" OnMouseDown="HandleApproveClick('TVLic','lbnTVLicApprove');return false;" OnClientClick="HandleApproveClick('TVLic','lbnTVLicApprove');return false;" />
<span class="approval-label">Accept document:</span></asp:panel>
</div>
</asp:panel>
L'application est écrit en C#, mais je havn't a affiché un code réel que tout le code d'utilisateur lié à ce balisage semble fonctionner très bien.
Le problème est que CheckBox chkTVLic a la valeur de validation définie sur false et autopostback sur true. Donc, quoi qu'il arrive quand je coche et décoche la case à cocher cela devrait être publié. La plupart du temps c'est exactement ce qu'il fait et le résultat est d'afficher et de cacher pnlTVLic quand il est coché et non coché. Cependant, s'il y en a un sur les validateurs du tableau de bord, la case à cocher ne provoque pas de publication la première fois. Il le fera tous les temps suivants mais jamais le premier. Cependant, il devrait TOUJOURS provoquer une publication. Qu'est-ce qui pourrait l'arrêter? Avant que quelqu'un demande il n'y a pas d'utilisation du code côté client écrit, tout est pur. Net markup et C# code.
Pourquoi le CheckBox devrait-il provoquer une publication, lorsqu'un déclencheur de validation se déclenche? Il fera une publication chaque fois que l'utilisateur clique dessus, AFAIK. – Marcel
Il s'agit d'un article très ancien, mais je ne voulais pas dire qu'une case à cocher devrait être validée lorsqu'un validateur se déclenche. C'est ce qu'il devrait faire une publication chaque fois qu'un utilisateur clique dessus, quel que soit l'état de validation des autres contrôles. Cependant, le comportement était que cela fonctionnait bien si aucun des validateurs n'avait tiré et renvoyé comme prévu, mais si l'un des validateurs avait viré, vous deviez cliquer deux fois pour le renvoyer. –