Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908

    RangeValidator e controllo calendar, strano problema

    Ho una pagina così composta:

    Default3.aspx
    codice:
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
    
    
    <!DOCTYPE html>
    
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        
            Arrival date:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="RangeValidator" Type="Date">Intervallo non corretto!</asp:RangeValidator>
            <br />
            <br />
            <asp:Calendar ID="Calendar1" runat="server" OnSelectionChanged="Calendar1_SelectionChanged"></asp:Calendar>
            <br />
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
            <br />
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        </div>
        </form>
    </body>
    </html>
    Default3.aspx.cs
    codice:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    
    public partial class Default3 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            RangeValidator1.MinimumValue = DateTime.Now.ToShortDateString();
            RangeValidator1.MaximumValue = DateTime.Now.AddDays(14).ToShortDateString();
        }
    
    
        protected void Calendar1_SelectionChanged(object sender, EventArgs e)
        {
            TextBox1.Text = Calendar1.SelectedDate.ToShortDateString();
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                Label1.Text = "Il tuo arrivo è previsto per: " + TextBox1.Text.ToString();
            }
            
        }
    }
    La validazione non funziona! Il sistema dovrebbe avvisare se la data scelta dal calendario supera di 14 giorni quella attuale, ma niente, non va! Cosa sbaglio?
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    prova se funziona

    codice:
        Protected Sub Calendar1_Load(sender As Object, e As System.EventArgs) Handles Calendar1.Load
            Me.Validate()
        End Sub
    
        Protected Sub Calendar1_SelectionChanged(sender As Object, e As System.EventArgs) Handles Calendar1.SelectionChanged
            TextBox1.Text = Calendar1.SelectedDate.ToShortDateString()
            Me.Validate()
        End Sub
    Pietro

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Non funziona perche' al RangeValidator1 hai dato il <MinumumValue> fisso alla data corrente.
    Devi dargli quella scelta dal calendario, no ?

    codice:
    protected void Page_Load(object sender,EventArgs e)
    {
      RangeValidator1.MinimumValue = Calendar1.SelectedDate.ToShortDateString();
      RangeValidator1.MaximumValue = DateTime.Now.AddDays(14).ToShortDateString();
    }
    

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Quote Originariamente inviata da djciko Visualizza il messaggio
    Non funziona perche' al RangeValidator1 hai dato il <MinumumValue> fisso alla data corrente.
    Devi dargli quella scelta dal calendario, no ?

    codice:
    protected void Page_Load(object sender,EventArgs e)
    {
      RangeValidator1.MinimumValue = Calendar1.SelectedDate.ToShortDateString();
      RangeValidator1.MaximumValue = DateTime.Now.AddDays(14).ToShortDateString();
    }
    
    Aspettando che l'amico risponda, scusa la domanda, ma l'hai visto IL NOSTRO FABIO ARU?
    Pietro

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    da una ricerca mi sembra un ciclista...no Pietro non seguo questo sport
    Che ha fatto ?

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Quote Originariamente inviata da djciko Visualizza il messaggio
    da una ricerca mi sembra un ciclista...no Pietro non seguo questo sport
    Che ha fatto ?



    PS. suggerimento: troppo informatica fa male! si cura con una bella bicicletta e una buona salita
    Pietro

  7. #7

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Quote Originariamente inviata da djciko Visualizza il messaggio
    beh tu sai chi e' Dixon ?
    No. Ma so chi erano Pantani, Coppi, Bartali
    Pietro

  9. #9
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    Quote Originariamente inviata da djciko Visualizza il messaggio
    Non funziona perche' al RangeValidator1 hai dato il <MinumumValue> fisso alla data corrente.
    Devi dargli quella scelta dal calendario, no ?

    codice:
    protected void Page_Load(object sender,EventArgs e)
    {
      RangeValidator1.MinimumValue = Calendar1.SelectedDate.ToShortDateString();
      RangeValidator1.MaximumValue = DateTime.Now.AddDays(14).ToShortDateString();
    }
    
    No! Perché i 14 giorni massimi entro i quali è possibile prenotare devono partire dalla data in cui l'utente effettua l'operazione, e quindi ho volutamente impostato MiniumValue per prendere il valore autonomamente. Allora, meglio mettere un po' d'ordine nella questione, perché a quanto pare in me regna un po' di confusione:

    1. La proprietà MiniumValue del controllo Rangevalidator viene popolata dinamicamente in fase di caricamento della pagina con la data attuale;

    2. La proprietà MaximumValue del controllo RangeValidator viene popolata dinamicamente in fase di caricamento della pagina da un valore derivante dall'aggiunta di 14 giorni dalla data attuale(mettiamo che oggi siamo all'1 giugno, il valore di MaximumValue sarebbe 15);

    3.
    In teoria, considerando che oggi siamo al primo giugno, ad esempio, se dal calendario seleziono una data entro il 15 la prenotazione dovrebbe andare a buon fine, mentre dal 16 in poi otterrei l'errore poiché di tratta di un range non compreso nei 14 giorni successivi alla data odierna. Ed è proprio ques'ultimo passaggio che non mi è chiaro!
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  10. #10
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887


    cosi' mi funziona

    codice:
     <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="tb" runat="server"></asp:TextBox>
            <asp:RangeValidator Display="Dynamic" ID="rv" runat="server" ControlToValidate="tb"
                ErrorMessage="Range Errato - Entro 14 gg" Type="Date"></asp:RangeValidator>
        </div>
        <br />
        <asp:Calendar ID="calendar1" runat="server" OnSelectionChanged="calendar1_SelectionChanged">
        </asp:Calendar>
    </form>



    codice:
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
            If Not IsPostBack Then
                rv.MinimumValue = DateTime.Now.ToShortDateString()
                rv.MaximumValue = DateTime.Now.AddDays(14).ToShortDateString()
            End If
    
            Response.Write("Puoi scegliere una data che va dal " + rv.MinimumValue.ToString() + " al " + rv.MaximumValue.ToString())
        End Sub
    
    
    
    
        Protected Sub calendar1_SelectionChanged(sender As Object, e As EventArgs) Handles calendar1.SelectionChanged
            tb.Text = calendar1.SelectedDate
            Me.Validate()
        End Sub
    Ultima modifica di djciko; 03-06-2014 a 11:42

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.