2016-05-13 4 views
1

私のWPFアプリケーションでは、MySqlデータベースのテーブルを表示するDataGridがありますが、列はDATE型ですが、dataGridを入力すると、 12:00:00)。表中DataGridは、DateTimeをMySqlからインポートするときにDateTimeを表示します。

はXAML

<UserControl x:Class="Projet.Recources0.Etudiant.Interne.Ajouter" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mui="http://firstfloorsoftware.com/ModernUI" 
     xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls" 
     mc:Ignorable="d" 
     d:DesignHeight="500" d:DesignWidth="1000"> 
    <Grid> 
     <TextBox x:Name="Matricule" controls:TextBoxHelper.Watermark="Matricule" controls:TextBoxHelper.ClearTextButton="True" HorizontalAlignment="Left" Height="23" Margin="25,71,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="225"/> 
     <TextBox x:Name="Nom" controls:TextBoxHelper.Watermark="Nom" controls:TextBoxHelper.ClearTextButton="True" HorizontalAlignment="Left" Height="23" Margin="25,102,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="225"/> 
     <TextBox x:Name="Prenom" controls:TextBoxHelper.Watermark="Prenom" controls:TextBoxHelper.ClearTextButton="True" HorizontalAlignment="Left" Height="23" Margin="25,133,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="225"/> 
     <TextBox x:Name="E_mail" controls:TextBoxHelper.Watermark="E-mail" controls:TextBoxHelper.ClearTextButton="True" HorizontalAlignment="Left" Height="23" Margin="25,164,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="225"/> 
     <ComboBox x:Name="Sex" controls:TextBoxHelper.Watermark="Sexe" HorizontalAlignment="Left" Margin="25,195,0,0" VerticalAlignment="Top" Width="225"/> 
     <DatePicker x:Name="D_N" HorizontalAlignment="Left" Margin="25,226,0,0" VerticalAlignment="Top" Width="100" Height="27"/> 
     <TextBox x:Name="L_N" controls:TextBoxHelper.Watermark="Lieux de Naissance" controls:TextBoxHelper.ClearTextButton="True" HorizontalAlignment="Left" Height="23" Margin="130,228,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/> 
     <TextBox x:Name="Addrs" controls:TextBoxHelper.Watermark="Addresse" controls:TextBoxHelper.ClearTextButton="True" HorizontalAlignment="Left" Height="23" Margin="25,259,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="225"/> 
     <controls:NumericUpDown x:Name="Consiel" Minimum="0" Maximum="20" Interval="1" Margin="25,290,750,174"/> 
     <controls:NumericUpDown x:Name="Redouble" Minimum="0" Maximum="20" Interval="1" Margin="25,331,750,133"/> 
     <Button x:Name="Ajouter_Interne" Content="Ajouter" HorizontalAlignment="Left" Margin="172,400,0,0" VerticalAlignment="Top" Width="93" Click="Ajouter_Interne_Click" /> 
     <DataGrid x:Name="Interne" IsReadOnly="True" AutoGenerateColumns="True" CanUserReorderColumns="True" CanUserResizeColumns="True" CanUserResizeRows="False" CanUserSortColumns="True" HorizontalAlignment="Left" Margin="288,48,0,0" VerticalAlignment="Top" Height="345" Width="652"/> 
    </Grid> 
</UserControl> 

入力

private void Ajouter_Interne_Click(object sender, RoutedEventArgs e) 
    { 
     MessageBox.Show(Code); 
     String in_Mat = Matricule.Text; 
     String in_nom = Nom.Text; 
     String in_prenom = Prenom.Text; 
     String in_email = E_mail.Text; 
     String Sexe = ""; 
     if (Sex.Text == "Homme") 
      Sexe = "H"; 
     else if (Sex.Text == "Femme") 
      Sexe = "F"; 
     String in_date = D_N.SelectedDate.Value.ToString("yyyyMMdd"); 
     String in_Lieux = L_N.Text; 
     String in_Adrs = Addrs.Text; 
     int in_Redouble = (int)Redouble.Value; 
     int in_Consiel = (int)Consiel.Value; 
     String CPI_Code = Code; 
     String UserName = in_Mat; 
     String Password = RandomString(10); 
     MySqlConnection connection = new MySqlConnection(cnx_string); 
     connection.Open(); 
     string newcon_sql = "INSERT INTO `gestion_concour`.`interne` (`Matricule`, `Nom`, `Prenom`, `E_mail`, `Sexe`, `Date_Naissance`, `Lieu_Naissance`, `Address`, `Redoublement`, `Consiel`, `CPI_Code`) VALUES (@Mat, @Nom, @Prenom, @Email, @SEXE, @DN, @LN, @Adrs, @Redouble, @Consiel, @CPI_Code);"; 
     MySqlCommand newcon = new MySqlCommand(newcon_sql, connection); 
     newcon.CommandText = newcon_sql; 
     newcon.Parameters.AddWithValue("@Mat", in_Mat); 
     newcon.Parameters.AddWithValue("@Nom", in_nom); 
     newcon.Parameters.AddWithValue("@Prenom", in_prenom); 
     newcon.Parameters.AddWithValue("@Email", in_email); 
     newcon.Parameters.AddWithValue("@SEXE", Sexe); 
     newcon.Parameters.AddWithValue("@DN", in_date); 
     newcon.Parameters.AddWithValue("@LN", in_Lieux); 
     newcon.Parameters.AddWithValue("@Adrs", in_Adrs); 
     newcon.Parameters.AddWithValue("@Redouble", in_Redouble); 
     newcon.Parameters.AddWithValue("@Consiel", in_Consiel); 
     newcon.Parameters.AddWithValue("@CPI_Code", CPI_Code); 
     newcon.ExecuteNonQuery(); 
     String CCode = Concour_Code; 
     String qq = "INSERT INTO `gestion_concour`.`condidat_concour` (`Matricule`, `Nom`, `Prenom`, `E_mail`, `password`, `Sexe`, `Date_Naissence`, `Lieu_Naissence`, `Address`, `Username`, `Redoublement`, `Consiel`, `Rattrapage`, `Concour_Code`) VALUES (@Matricule, @Nom, @Prenom, @E_mail, @password, @Sexe, @Date_Naissence, @Lieu_Naissence, @Address, @Username, @Redoublement, @Consiel, @Rattrapage, @Concour_Code);"; 
     MySqlCommand cmd = new MySqlCommand(qq, connection); 
     cmd.CommandText = qq; 
     cmd.Parameters.AddWithValue("@Matricule", in_Mat); 
     cmd.Parameters.AddWithValue("@Nom", in_nom); 
     cmd.Parameters.AddWithValue("@Prenom", in_prenom); 
     cmd.Parameters.AddWithValue("@E_mail", in_email); 
     cmd.Parameters.AddWithValue("@password", Password); 
     cmd.Parameters.AddWithValue("@Sexe", Sexe); 
     cmd.Parameters.AddWithValue("@Date_Naissence", in_date); 
     cmd.Parameters.AddWithValue("@Lieu_Naissence", in_Lieux); 
     cmd.Parameters.AddWithValue("@Address", in_Adrs); 
     cmd.Parameters.AddWithValue("@Username", UserName); 
     cmd.Parameters.AddWithValue("@Redoublement", in_Redouble); 
     cmd.Parameters.AddWithValue("@Consiel", in_Consiel); 
     cmd.Parameters.AddWithValue("@Rattrapage", null); 
     cmd.Parameters.AddWithValue("@Concour_Code", CCode); 
     cmd.ExecuteNonQuery(); 
     connection.Close(); 
     fill_grid(Interne, "SELECT * FROM gestion_concour.interne;"); 
     Email.Email_Sender(in_email, Password, UserName); 
     Matricule.Clear(); 
     Nom.Clear(); 
     Prenom.Clear(); 
     E_mail.Clear(); 
     L_N.Clear(); 
     Addrs.Clear(); 
    } 
アウト表

public void fill_grid(DataGrid dg, string query) 
    { 
     try 
     { 
      //conneter à la base de donnée (gestion_concour) 
      MySqlConnection connection = new MySqlConnection(cnx_string); 
      connection.Open(); 
      MySqlCommand cmd = new MySqlCommand(query, connection); 
      cmd.ExecuteNonQuery(); 
      MySqlDataAdapter da = new MySqlDataAdapter(cmd); 
      DataTable dt = new DataTable("concour"); 
      da.Fill(dt); 
      dg.ItemsSource = dt.DefaultView; 
      da.Update(dt); 
      connection.Close(); 
     } 
     catch (Exception ex) 
     { 
      var v = new ModernDialog 
      { 
       Title = "Error", 
       Content = ex.Message 
      }; 
      v.Buttons = new Button[] { v.OkButton }; 
      var r = v.ShowDialog(); 
     } 
    } 

結果から入れ

常にこの Result

+1

A複製? [この回答](http://stackoverflow.com/questions/7978249/date-formatting-in-wpf-datagrid)と[日付の書式設定のwpf-datagrid](http://stackoverflow.com/a/ 16554340/1506454) – ASh

答えて

1

ように見える「問題」はここにある:

<DataGrid x:Name="Interne" IsReadOnly="True" AutoGenerateColumns="True" CanUserReorderColumns="True" CanUserResizeColumns="True" CanUserResizeRows="False" CanUserSortColumns="True" HorizontalAlignment="Left" Margin="288,48,0,0" VerticalAlignment="Top" Height="345" Width="652"/> 

ソリューションは、個別の列を生成することですので、あなたは自分の視覚を制御することができます。たとえば、次のように:

<DataGrid Height="150" ItemsSource="{Binding MyCollection, UpdateSourceTrigger=PropertyChanged}" 
AutoGenerateColumns="False"> 
<DataGrid.Columns> 
    <DataGridTemplateColumn Header="Descrição" IsReadOnly="True" SortMemberPath="DescricaoServico" CanUserSort="True" MinWidth="260"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding DescricaoServico}" VerticalAlignment="Center" HorizontalAlignment="Left"/> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
    </DataGridTemplateColumn> 

<DataGridTemplateColumn Header="My Date" IsReadOnly="True" SortMemberPath="MyDateProperty" CanUserSort="True" MinWidth="260"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding MyDateProperty, StringFormat={}{0:dd/MM/yyyy}}" VerticalAlignment="Center" HorizontalAlignment="Left"/> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
    </DataGridTemplateColumn> 

</DataGrid> 

これは、列が表示されます 'MyDateProperty' DD/MM/YYYYとして

関連する問題