none
J'essaie de valider une textbox en mode update (nouvelle date doit > aujourd'hui RRS feed

  • Question

  • Bonjour

    J'essaie de valider une textbox en mode update (nouvelle date doit > aujourd'hui, mais il ne passe rien (pas d'erreur mais n'importe quelle date est acceptée).

    Merci.

    <asp:TemplateField SortExpression="enddat"> <EditItemTemplate> <asp:TextBox ID="enddat" runat="server" Text='<%# Bind("enddat","{0:dd-MM-yy}") %>' CausesValidation="true" ></asp:TextBox> <asp:CustomValidator ID="compare1" ValidateEmptyText="true" runat="server" EnableClientScript="false" Display="Dynamic" ControlToValidate="enddat" ErrorMessage="must be after today"> </asp:CustomValidator>

    Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating
    
     Dim row As GridViewRow = CType(GridView1.Rows(e.RowIndex), GridViewRow)
     Dim enddat As TextBox = CType(row.FindControl("enddat"), TextBox)
     Dim val As CustomValidator = CType(row.FindControl("compare1"), CustomValidator)
     dat = DateTime.Now.ToString("dd-MM-yy")
    
            If Convert.ToDateTime(enddat.Text) < dat Then
                val.IsValid = False
            End If
    End Sub

    mercredi 4 novembre 2020 10:22

Réponses

Toutes les réponses

  • Bonjour, 

    Dans ce thread il y a quelques idées: Validate that date must not be greater than todays date ?.
    Le code est en C#, si vous avez besoin, vous pouvez utiliser un convertisseur pour vb.net.

    Cordialement,
    Nina

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mercredi 4 novembre 2020 17:18
    Modérateur
  • Merci, mais le problème ici est que le textbox à valider se trouve être entre des balises

    <asp:TemplateField> <EditItemTemplate>

    ...

    </asp:TemplateField> </EditItemTemplate>

    Sans cela, ça marche.

    jeudi 5 novembre 2020 09:55
  • Bonjour Raffarin,

    Dans les deux premiers exemples du lien que Nina vous a donné la comparaison se fait entre deux variables du type DateTime tandis que votre variable dat semble être une chaîne de caractère. L’Option Strict On aide à contourner ce type de problèmes et pour cette raison je voudrais vous conseiller de l’activer et de définir dat comme DateTime. La méthode ToString n’est pas nécessaire dans ce cas, parce que l’operateur < fonctionne bien avec des variables du type DateTime.

    Option Strict On
    
    '...
    
    Dim dat As DateTime
    
    '...
    
        dat = DateTime.Now
            If Convert.ToDateTime(enddat.Text) < dat Then
                val.IsValid = False
            End If

    Cordialement,
    Dimitar

    jeudi 5 novembre 2020 19:11
    Modérateur
  • Merci. Je vais essayer.

    Cordialement

    Raf

    • Marqué comme réponse Raffarin mercredi 11 novembre 2020 15:35
    vendredi 6 novembre 2020 19:31
  • Bonjour Raf,

    Pouvons-nous considérer que vous avez résolu votre problème avec les scénarios proposés? Si oui, merci de les marquer comme réponses. Cela va améliorer la lisibilité du forum en indiquant la solution du problème. Si vous avez une autre solution, pourriez-vous la partager avec nous pour que d'autres personnes avec le même problème puissent profiter de cette solution?

    Cordialement,
    Nina


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    vendredi 13 novembre 2020 15:59
    Modérateur