IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

Binding date et heure (DateTimePicker)


Sujet :

Silverlight

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 24
    Points
    24
    Par défaut Binding date et heure (DateTimePicker)
    Bonjour,

    J'ai une BDD avec un champ DateTime.
    Je veux donc enregistrer dans ma BDD la date et l'heure
    Le probleme et qu'il y a que la date qui s'enregistre.

    Ma premiere solution est d'utiliser un DatePicker et un TimePicker dans ma DataForm:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <toolkit:DataField>
       <sdk:DatePicker SelectedDate="{Binding Path=Debut,Mode=TwoWay}"   />
    </toolkit:DataField>
    <toolkit:DataField>
        <toolkit:TimePicker Value="{Binding Path=Debut,Mode=TwoWay}" />
    </toolkit:DataField>

    La date et l'heure change bien dans le context mais il y a que la date qui s'enregistre dans la BDD.

    ensuite j'ai fais un UserControl et j'ai le même probleme
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <UserControl x:Class="VEH.DateTimePicker"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"
        xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
        d:DesignHeight="30" d:DesignWidth="250">
     
        <Grid x:Name="LayoutRoot" Background="Transparent">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="0.65*"/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
     
            <sdk:DatePicker Height="23" Name="dpMain" VerticalAlignment="Center" Margin="0,4" />
            <toolkit:TimePicker Grid.Column="1" Height="23" HorizontalAlignment="Stretch"  Name="tpMain" VerticalAlignment="Center" />
        </Grid>
    </UserControl>

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    Imports System.Collections.Generic
    Imports System.Linq
    Imports System.Net
    Imports System.Windows
    Imports System.Windows.Controls
    Imports System.Windows.Documents
    Imports System.Windows.Input
    Imports System.Windows.Media
    Imports System.Windows.Media.Animation
    Imports System.Windows.Shapes
     
    '****************************
    ' * :<my3:DateTimePicker  DisplayData="{Binding Mode=TwoWay, Path=StartDate, NotifyOnValidationError=True}" Width="230" />
    ' * *****************************
     
    Partial Public Class DateTimePicker
        Inherits UserControl
     
        Public Sub New()
            InitializeComponent()
        End Sub
        Public Shared ReadOnly DisplayDataProperty As DependencyProperty = DependencyProperty.Register("DisplayData", GetType(DateTime), GetType(DateTimePicker), New PropertyMetadata(New PropertyChangedCallback(AddressOf DisplayDataPropertyCallBack)))
        ''' <summary>
        ''' 
        ''' </summary>
        Public Property DisplayData() As DateTime
            Get
                Return CType(Me.GetValue(DisplayDataProperty), DateTime)
            End Get
            Set(value As DateTime)
                SetValue(DisplayDataProperty, value)
            End Set
        End Property
     
        Public Shared Sub DisplayDataPropertyCallBack(sender As Object, args As DependencyPropertyChangedEventArgs)
     
            Dim sel As DateTimePicker = TryCast(sender, DateTimePicker)
            If sel IsNot Nothing Then
                If args.NewValue IsNot Nothing Then
                    Dim dt As DateTime
                    If DateTime.TryParse(args.NewValue.ToString(), dt) Then
                        sel.SetDataTime(dt)
                    End If
                End If
            End If
        End Sub
     
        Private isLoaded As Boolean = False
        Private Sub SetDataTime(datatime As DateTime)
            isLoaded = False
            Try
                dpMain.Text = datatime.ToString()
                tpMain.Value = datatime
     
                RemoveHandler dpMain.SelectedDateChanged, AddressOf dpMain_SelectedDateChanged
                AddHandler dpMain.SelectedDateChanged, AddressOf dpMain_SelectedDateChanged
     
                RemoveHandler tpMain.ValueChanged, AddressOf tpMain_ValueChanged
                AddHandler tpMain.ValueChanged, AddressOf tpMain_ValueChanged
            Catch ex As Exception
                ErrorWindow.CreateNew(ex)
            End Try
            isLoaded = True
        End Sub
     
        Private Sub dpMain_SelectedDateChanged(sender As Object, e As SelectionChangedEventArgs)
            If isLoaded = False Then
                Return
            End If
     
            Dim hour As Integer = DisplayData.Hour
            Dim minute As Integer = DisplayData.Minute
            Dim second As Integer = DisplayData.Second
            If dpMain.SelectedDate IsNot Nothing Then
     
                If dpMain.SelectedDate.Value.Hour = 0 AndAlso dpMain.SelectedDate.Value.Minute = 0 Then
                    Dim datetime As DateTime = dpMain.SelectedDate.Value.AddHours(hour).AddMinutes(minute).AddSeconds(second)
     
                    DisplayData = datetime
                Else
                    DisplayData = dpMain.SelectedDate.Value
                End If
            End If
        End Sub
        ''' <summary>
        ''' 
        ''' </summary>
        ''' <param name="sender"></param>
        ''' <param name="e"></param>
        Private Sub tpMain_ValueChanged(sender As Object, e As RoutedPropertyChangedEventArgs(Of System.Nullable(Of DateTime)))
            If isLoaded = False Then
                Return
            End If
     
            Dim year As Integer = DisplayData.Year
            Dim month As Integer = DisplayData.Month
            Dim day As Integer = DisplayData.Day
     
            If tpMain.Value IsNot Nothing Then
                Dim dt As String = year.ToString() & "/" & month.ToString() & "/" & day.ToString() & " " & tpMain.Value.Value.Hour.ToString() & ":" & tpMain.Value.Value.Minute.ToString() & ":" & tpMain.Value.Value.Second.ToString()
                Dim d As DateTime = Convert.ToDateTime(dt)
                DisplayData = d
            End If
        End Sub
     
    End Class

    Avez vous des idées pour que je puisse enregistrer la date et l'heure svp?
    Merci

  2. #2
    Membre habitué Avatar de danuz
    Homme Profil pro
    Expert .NET (WPF, Silverlight, Windows Phone) chez Soat
    Inscrit en
    Avril 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Expert .NET (WPF, Silverlight, Windows Phone) chez Soat

    Informations forums :
    Inscription : Avril 2003
    Messages : 102
    Points : 153
    Points
    153
    Par défaut
    En fait, ton DatePicker et ton TimePicker sont bindés sur la même propriété (Debut). Avec l'un, tu écrases l'autre.

    Il te faut créer 2 propriétés que tu binderas à chaque contrôle qui lui est propre.

    Et tu créés pour finir une propriété de type DateTime en ReadOnly (un get) qui te renvoie les 2 propriétés combinées. C'est avec cette dernière que tu feras tes insertions en base.

    Ma réponse vous a aidé ? Pensez à voter pour elle. N'oubliez pas non plus de changer le statut de votre thread en Résolu.

    Mon blog
    Ma société: So@t

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Datetimepicker Plage de date et heure
    Par naroco dans le forum jQuery
    Réponses: 0
    Dernier message: 17/09/2012, 17h08
  2. récupérer la date et heure système
    Par Rnx69 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/06/2005, 15h43
  3. [C#] Calcul sur les dates avec des DateTimePicker
    Par alizee971 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 02/04/2005, 17h14
  4. [date et heure] convertion d'une date en chaîne
    Par jean-jacques varvenne dans le forum SQL
    Réponses: 5
    Dernier message: 23/03/2005, 11h31
  5. Manipulations de dates et heures
    Par benj63 dans le forum C++
    Réponses: 5
    Dernier message: 16/12/2004, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo