Di solito la faccio solo clientside (lo so non si dovrebbe) ma in questo caso devo usare un customvalidator e faccio la validazione anche serverside... finora però con "poca soddisfazione".
Ho due textbox per inserimento di PEC e codice univoco per fatt.elettronica.
Ho aggiunto un customvalidator che fa in controllo serverside che almeno uno dei due campi contenga qualcosa BUT la funzione che fa il controllo non viene mai chiamata e non so pecchè....
La validazione lato server la lancio sull'evento inserting dell'sqldatasource agganciato al formview che contiene i controlli di cui sopracodice:<asp:FormView ID="FormView1" runat="server" DefaultMode="Insert" DataKeyNames="an_ID" DataSourceID="SqlNuoviCli" OnItemInserted="formview_Inserted" OnItemUpdated="formview_updated"> <InsertItemTemplate> ... <asp:TextBox ID="tb_emailpec" runat="server" Text='<%# Bind("an_emailpec") %>' ></asp:TextBox> <asp:TextBox ID="tb_coduffpa" runat="server" Text='<%# Bind("an_coduffpa") %>' ></asp:TextBox> <asp:CustomValidator ID="FEvalidator" runat="server" ControlToValidate="tb_emailpec" OnServerValidate="ValidaXFE" ErrorMessage="Email PEC o Codice Destinatario sono richiesti" ValidationGroup="newcli" Display="None"></asp:CustomValidator> codebehind Protected Sub ValidaXFE(sender As Object, e As ServerValidateEventArgs) Dim risultato As Boolean = True Try Dim tbpec As TextBox = DirectCast(FormView1.FindControl("tb_emailpec"), TextBox) Dim tbuni As TextBox = DirectCast(FormView1.FindControl("tb_coduffpa"), TextBox) If (tbpec.Text = "" And tbuni.Text = "") Then risultato = False End If Catch ex As Exception risultato = False End Try e.IsValid = risultato End Sub
e page è sempre valid anche se lascio i due textbox vuoti perchè dal debugger vedo che non entra proprio nella funzione di controllo del contenuto dei campi ValidaXFE... WARUM?codice:Protected Sub SqlNuoviCli_Inserting(sender As Object, e As SqlDataSourceCommandEventArgs) Page.Validate("newcli") If Page.IsValid Then .... End If End Sub![]()

Rispondi quotando