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 Forms Discussion :

Problème récupération x:Name


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Février 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Février 2015
    Messages : 66
    Points : 63
    Points
    63
    Par défaut Problème récupération x:Name
    Bonjour,

    Pour réaliser un petit projet (logiciel de gestion de pièces 3D), j'ai besoin de communiquer avec une base de données. (pas de soucis la dessus)
    J'ai pour cela créé une classe regroupant toutes mes méthodes relatives au traitement SQL pour faire quelque chose de propre (nom de fichier DBConnect.cs).

    J'ai de l'autre coté une interface WPF (nom de fichier MainWindow.xaml) dont une page est liée (MainWindow.xaml.cs).


    Dans le fichier "MainWindow.xaml" je défini une DataGrid (me permettant de visualiser une table de ma DB)

    Voici le code de mon fichier "ManWindow.xaml" :
    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
    <Window x:Class="_3DFileManagerWPF.MainWindow"
            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"
            xmlns:local="clr-namespace:_3DFileManagerWPF"
            mc:Ignorable="d"
            Title="3D FIle Manager" WindowState="Maximized" Loaded="Window_Loaded">
        <Grid>
    
                           [.....]
    
                    <StackPanel Grid.Row="1" Grid.ColumnSpan="3">
                        <DataGrid x:Name="affichageDatabase">
                            
                        </DataGrid>
                    </StackPanel>
                </Grid>
            </StackPanel>
        </Grid>
    </Window>
    La ligne x:Class="_3DFileManagerWPF.MainWindow" permet de dire que le fichier lié à la page xaml est "MainWindow.xaml.cs". Dans le fichier .cs j'arrive bien à récupérer les noms "x:Name" afin d'intéragir avec l'application.

    Seulement, j'aurai besoin de récupérer le nom de mon DataGrid x:Name="affichageDatabase" dans mon fichier "DBConnect.cs".

    Il m'est impossible de récupérer ce nom via ce code :

    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
     public void fillDataGrid()
            {
                string query = "SELECT * FROM 3D_parts";
    
                //open connection
                if (this.OpenConnection() == true)
                {
                    //create command and assign the query and connection from the constructor
                    MySqlCommand cmd = new MySqlCommand(query, connection);
    
                    MySqlDataAdapter sda = new MySqlDataAdapter(cmd);
                    DataTable dt = new DataTable("3d_parts");
                    sda.Fill(dt);
                    affichageDatabase.ItemsSource = dt.DefaultView;
    
                    //close connection
                    this.CloseConnection();
                }
            }
    Comment puis-je faire pour utiliser x:Name="affichageDatabase" dans mon fichier "DBConnect.cs" ?

    Quelqu'un serait-il en mesure de me venir en aide ?

    Cordialement,

    Zeratec

  2. #2
    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
    bonjour

    C'est la voie contraire à toute la pratique : qui connait qui ?
    C'est l'interface graphique ,ton MainWindow qui doit connaitre ton class data DBConnect et l'appeler ...
    Un class data ne doit jamais connaitre l'interface graphique.....!!!
    Ton class data est à revoir car il renvoyer une instance DataTable "fille" au Form...

    code .cs de DBConnect revu:
    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
     
     
     public  class DBConnect
        {
            private DataTable mytable = null;
            public DataTable Table
            { 
                get { return mytable; }
            }
     
            public void fillDataGrid()
            {
                mytable = null;
                string query = "SELECT * FROM 3D_parts";
     
                //open connection
                if (this.OpenConnection() == true)
                {
                    //create command and assign the query and connection from the constructor
                    MySqlCommand cmd = new MySqlCommand(query, connection);
     
                    MySqlDataAdapter sda = new MySqlDataAdapter(cmd);
                    mytable = new DataTable("3d_parts");
                    sda.Fill(mytable);
                    affichageDatabase.ItemsSource = dt.DefaultView;
     
                    //close connection
                    this.CloseConnection();
                }
            }
        }
    code xaml du Form:

    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
     
    <Window x:Class="WpfApplication2.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525"
            Loaded="Window_Loaded">
     
        <!--note l'event Loaded-->
        <Grid>
            <StackPanel Grid.Row="1" Grid.ColumnSpan="3">
                <DataGrid x:Name="affichageDatabase">
     
                </DataGrid>
            </StackPanel>
        </Grid>
    </Window>
    & code .cs revu du Form:
    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
     
     
    public partial class MainWindow : Window
        {
            private DBConnect db = null;
            public MainWindow()
            {
                InitializeComponent();
     
            }
     
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                db = new DBConnect();
                db.fillDataGrid();
                this.affichageDatabase.ItemsSource = db.Table.DefaultView;
            }
        }
    bon code...

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Février 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Février 2015
    Messages : 66
    Points : 63
    Points
    63
    Par défaut
    Merci beaucoup ! Cela fonctionne comme il faut.

    Je vais essayer de comprendre mes erreurs de raisonnement

    Thomas

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

Discussions similaires

  1. [RegEx] problème récupération texte
    Par Kerod dans le forum Langage
    Réponses: 2
    Dernier message: 25/01/2006, 16h10
  2. Problème récupération formulaire
    Par kalimer0 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 23/12/2005, 14h47
  3. [MySQL] Problème récupération de données avec un SELECT DISTINCT
    Par 12_darte_12 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/07/2005, 14h48
  4. problème récupération valeur d'un "div"
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/06/2005, 10h04
  5. [Débutant] Problème récupération de données
    Par flogreg dans le forum Servlets/JSP
    Réponses: 26
    Dernier message: 20/08/2004, 17h29

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