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

Windows Presentation Foundation Discussion :

Rotation de quelques colonnes dans une datagrid


Sujet :

Windows Presentation Foundation

  1. #1
    Candidat au Club
    Homme Profil pro
    entrepreneur
    Inscrit en
    Mai 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : entrepreneur

    Informations forums :
    Inscription : Mai 2020
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Rotation de quelques colonnes dans une datagrid
    Bonjour,

    Je découvre petit à petit WPF C#, je développe un projet :

    J'ai 2 tables (Sqlite) qui s'affichent chacune dans une Datagrid, l'utilisateur peut y entrer des données, les modifier ou supprimer.

    Code : 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
    SQLiteConnection sqliteCon = new SQLiteConnection(Properties.Settings.Default.DbConnectionString);
            public Page2()
            {
                InitializeComponent();
                string dbConnectiongString = @"Data Source=database.db;Version=3;";
                SQLiteConnection sqliteCon = new SQLiteConnection(dbConnectiongString);
                // ouvrir la base de donnée
                try
                {
                    sqliteCon.Open();
                    string Query = "select ID,Compte,Date_Opération,Date_Valeur,Statut,Code_flux,Libellé,Sens,Référence,Montant,devise from Flux ";
                    SQLiteCommand createCommand = new SQLiteCommand(Query, sqliteCon);
                    createCommand.ExecuteNonQuery();
     
                    SQLiteDataAdapter DataAdp = new SQLiteDataAdapter(createCommand);
                    DataTable dt = new DataTable("Flux");
                    DataAdp.Fill(dt);
                    Dgflux.ItemsSource = dt.DefaultView;
                    DataAdp.Update(dt);
                    sqliteCon.Close();
     
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
     
                }
            }

    Code : 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
    SQLiteConnection sqliteCon = new SQLiteConnection(Properties.Settings.Default.DbConnectionString);
     
            public Window4()
            //Récupérer élément d'une table dans liste déroulante
            {
                InitializeComponent();
                string dbConnectiongString = @"Data Source=database.db;Version=3;";
                SQLiteConnection sqliteCon = new SQLiteConnection(dbConnectiongString);
                // ouvrir la base de donnée
                try
                {
                    sqliteCon.Open();
                    string Query = "select ID,Intitulé,Date,Solde,Devise from Soldes_bancaires ";
                    SQLiteCommand createCommand = new SQLiteCommand(Query, sqliteCon);
                    createCommand.ExecuteNonQuery();
     
                    SQLiteDataAdapter DataAdp = new SQLiteDataAdapter(createCommand);
                    DataTable dt = new DataTable("Soldes_bancaires");
                    DataAdp.Fill(dt);
                    Soldes.ItemsSource = dt.DefaultView;
                    DataAdp.Update(dt);
                    sqliteCon.Close();
     
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
    Je souhaiterais avoir une 3ème datagrid ou autre chose qui me permettrait d'y faire un récapitulatif à la manière d'un TCD.
    Donc est-ce q'un datagrid peut être utilisé ou autre chose ?
    J'ai besoin que les données de certains champs de mes tables (date et montant) soient disposés à l'horizontal.
    De plus, j'aimerais pouvoir y ajouter des lignes de sous-totaux et totaux.
    Pouvez-vous m'éclairer sur la faisabilité et une méthode ? SVP
    Merci

  2. #2
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Bonjour,

    Peut-être en utilisant un DataGridRowHeader au lieu d'un DataGridColumnHeader sur les colonnes souhaitées ?

  3. #3
    Candidat au Club
    Homme Profil pro
    entrepreneur
    Inscrit en
    Mai 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : entrepreneur

    Informations forums :
    Inscription : Mai 2020
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par WDKyle Voir le message
    Bonjour,

    Peut-être en utilisant un DataGridRowHeader au lieu d'un DataGridColumnHeader sur les colonnes souhaitées ?
    Bonjour,

    Merci pour la réponse.

    Malheureusement, je ne sais pas comment utiliser le DataGridRowHeader...

    Je n'ai pas encore eu à utiliser le binding dans mon projet, est-ce nécessaire pour utiliser le DataGridRowHeader ?

    Merci.

  4. #4
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    Citation Envoyé par zanskar1998 Voir le message
    Bonjour,

    Merci pour la réponse.

    Malheureusement, je ne sais pas comment utiliser le DataGridRowHeader...

    Je n'ai pas encore eu à utiliser le binding dans mon projet, est-ce nécessaire pour utiliser le DataGridRowHeader ?

    Merci.
    C'et un besoin étrange car un DataGrid n'est pas un tableur.
    Mais puisque on peut faire des rotations ,des symetries ,voir des galippettes en animant les controls dans Wpf ,voici la solution qui fera peut être ton bonheur:
    code xaml du winform user alimenté par un DataTable:
    Code XAML : 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
    <Window x:Class="WpfHozontalDG.Window1"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="Window1" Height="350" Width="525">
        <Grid >
                <DataGrid 
                    x:Name="mydatagrid"
                    ItemsSource="{Binding }"
                    AutoGenerateColumns="False">
                    <DataGrid.LayoutTransform>
                        <TransformGroup>
                            <RotateTransform Angle="90"/>
                            <MatrixTransform Matrix="-1,0,0,1,0,0"/>
                        </TransformGroup>
                    </DataGrid.LayoutTransform>
                    <DataGrid.ColumnHeaderStyle>
                        <Style TargetType="{x:Type DataGridColumnHeader}"
                    BasedOn="{StaticResource {x:Type DataGridColumnHeader}}">
                            <Setter Property="LayoutTransform">
                                <Setter.Value>
                                    <TransformGroup>
                                        <RotateTransform Angle="-90"/>
                                        <ScaleTransform ScaleX="1" ScaleY="-1" />
                                    </TransformGroup>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </DataGrid.ColumnHeaderStyle>
                    <DataGrid.CellStyle>
                        <Style  TargetType="DataGridCell">
                            <Setter Property="LayoutTransform">
                                <Setter.Value>
                                    <TransformGroup>
                                        <RotateTransform Angle="-90"/>
                                        <ScaleTransform ScaleX="1" ScaleY="-1" />
                                    </TransformGroup>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </DataGrid.CellStyle>
                    <DataGrid.Columns>
                        <DataGridTextColumn Header="Date" Binding="{Binding Date,StringFormat=d}"/>
                        <DataGridTextColumn Header="Montant" Binding="{Binding Montant}"/>
                    </DataGrid.Columns>
            </DataGrid>
        </Grid>
    </Window>
    et son code-behind .cs:
    Code : 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
    using System.Data;
     
    namespace WpfHozontalDG
    {
        /// <summary>
        /// Logique d'interaction pour Window1.xaml
        /// </summary>
        public partial class Window1 : Window
        {
            private DataTable myTable = null;
            public Window1()
            {
                InitializeComponent();
                myTable = GetTable();
                this.mydatagrid.ItemsSource = myTable.DefaultView;
            }
     
            private Random rnd=new Random();
            private DataTable GetTable()
            {
                DataTable dt = new DataTable("Soldes");
                dt.Columns.Add(new DataColumn("Id", typeof(int)));
                dt.Columns.Add(new DataColumn("Nom", typeof(string)));
                dt.Columns.Add(new DataColumn("Date", typeof(DateTime)));
                dt.Columns.Add(new DataColumn("Montant", typeof(decimal)));
                DataRow dr = dt.NewRow();
                DateTime t = DateTime.Now;
                for (int i = 1; i < 21; i++)
                {
                    dr[0] = i * 100;
                    dr[1] = "Client" + i.ToString();
                    dr[2] = t.AddDays(rnd.Next(10, 50));
                    dr[3] = Math.Round(rnd.NextDouble() * 1000, 2);
                    dt.Rows.Add(dr);
                    dr = dt.NewRow();
                }
     
     
                return dt;
            }
        }
    }
    bon code....

  5. #5
    Candidat au Club
    Homme Profil pro
    entrepreneur
    Inscrit en
    Mai 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : entrepreneur

    Informations forums :
    Inscription : Mai 2020
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Merci beaucoup, j'ai tardé à répondre mais cela m'a beaucoup aidé !

Discussions similaires

  1. flowdirection pour une seul colonne dans une datagrid
    Par akremb22 dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 30/08/2010, 01h10
  2. Masquer une colonne dans une datagrid
    Par unix27 dans le forum ASP.NET
    Réponses: 15
    Dernier message: 01/07/2009, 12h02
  3. [XAML] Afficher/Masquer colonnes dans une DataGrid
    Par igloof dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 06/02/2009, 09h01
  4. recharger une colonne dans une datagrid
    Par lila123 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 04/11/2008, 11h26
  5. Rajouter une colonne dans une datagrid
    Par bejaad dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/08/2007, 10h32

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