none
Obtention des données par l'interface de développement RRS feed

  • Question

  • Bonjour tout le monde,

    En WebForms, on peut obtenir sur une page web l'affichage d'une table d'une base de données en la faisant glisser avec la souris de l'explorateur de serveurs vers la page.

    On s'épargne ainsi la peine de définir la chaîne de connexion, d'ouvrir la base, la table, de transférer les données ... On n'a plus qu'à lancer l'exécution, et critiquer la présentation. Après ça on peut corriger les "templates".

    J'ai cherché comment on fait la même chose en WinForms, et je n'ai pas trouvé.

    Est-ce que c'est parce que j'ai mal cherché ?

    Je dois même avouer que je ramais pour lier un Dataset à un formulaire, ça ne voulait pas.

    mardi 9 mars 2021 02:07

Toutes les réponses

  • Bonjour,

    J'espère que l'article suivant vous aidera: 
    Définir le contrôle à créer lors d’une opération de glisser-déplacer à partir de la fenêtre Sources de données

    Cordialement,
    Nina


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 9 mars 2021 07:59
    Modérateur
  • Bonjour,

    La documentation parle de WPF, mais à ce que je me rappelle j'ai aussi effectué cette manœuvre, donc c'était soit sous WebForms, soit sous WinForms.

    Mais je rencontre un problème au niveau précédent (à moins qu'on considère que ça soit le niveau suivant) : je n'ai pas su faire apparaître les champs de la table sur le formulaire (en WinForms), que ce soit avec un contrôle choisi ou un par défaut.

    Je me demande si j'ai fait une fausse manœuvre, si j'ai oublié de donner une autorisation quelque part, ou si il y a un autre problème.

    J'ai essayé de chercher ça sur Internet, et là j'ai trouvé beaucoup de volontaires pour expliquer comment on tape bravement du code pour se connecter à mySql. Quand c'est une vidéo et qu'on a de la chance, c'est quelqu'un qui fournit un son correct. Pas toujours.

    J'ai essayé de voir du côté des coaches MSDN, mais ils cherchent à faire passer le message que WinForms et WebForms sont obsolètes. Pas plus de chance du côté de Virtual Academy.

    mardi 9 mars 2021 08:43
  • Bonjour,

    La documentation au-dessus s'applique aux deux - WPF et Windows Forms.
    Dans l'article suivant il y a un exemple détaillé avec un DataSet comme source de données et il est montré comment lier les données au contrôle DataGridView:
    Lier des contrôles Windows Forms à des données dans Visual Studio


    Cordialement,
    Nina

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 9 mars 2021 14:06
    Modérateur
  • Ah, OK. C'est vrai que ça aurait mérité un coup d'œil plus attentif.

    Oh mais c'est que ça ressemble furieusement à ce que j'ai fait, donc mes souvenirs n'étaient pas si mauvais.

    Bon, il faut que j'essaie de nouveau, c'était peut-être juste un pas de travers.

    mardi 9 mars 2021 14:12
  • Je commence par créer une connexion sur une table (la dernière fois que j'ai essayé il m'a été proposé une mise à jour de mySql, j'ai cru m'être trompé).

    La création de la connexion (sur une table SQL Express) se passe bien, mais quand je fais glisser la table de l'explorateur de serveurs vers l'onglet Form1.cs[Design], le curseur de la souris prend la forme d'un panneau d'interdiction de stationnement, et lorsque je lâche la souris il ne se passe rien.

    Pas plus de chance en passant par un Dataset.

    J'ai essayé sur la surface du formulaire, en dessous ...

    Il n'y a que sur la barre d'état qu'on semble pouvoir atterrir, mais ça n'ajoute rien au formulaire.

    J'ai pris le problème par un autre bout, et dans la balise active du contrôle ListBox, j'ai coché "Use Databound Items", et au moment où j'ai essayé de dérouler la liste, une erreur est apparue, je ne peux proposer qu'une copie d'écran, car tant que cet écran est actif il reste figé, une fois qu'il ne l'est plus il est fermé.

    Je redémarre avant d'envoyer ça, car ça met beaucoup plus de temps que d'habitude à se télécharger.

    Erreur lors de l'accès à la liste Datasource

    Je suis passé par cjoint, peut-être y a-t-il un souci avec le répertoire des téléchargements.

    Alors comme je disais, on ne peut pas voir sous la boîte de dialogue, car elle est figée, et quand je reprends le contrôle l'écran d'erreur a disparu.

    On dirait qu'il y a de la randonnée en perspective dans les fichiers journaux ...



    • Modifié Gloops mardi 9 mars 2021 15:05
    mardi 9 mars 2021 14:41
  • Bonjour,

    Veuillez essayer de glisser la table de la fenêtre Source de données (pas de l'Explorateur des serveurs) vers la surface de conception du formulaire/l'onglet Form1.cs[Design]/ ou vers un contrôle.
    Si vous sélectionnez F5 sur l'application, les données de la base de données sous-jacente doivent apparaître dans les contrôles du formulaire.
    Mais avant cela, le DataSet (ou une autre source de données) doit être ajouté comme source de données par l'Assistant Configuration de source de données (Projet > Ajouter une nouvelle source de données). Choisissez le type de source de données de base de données et suivez les invites pour spécifier une connexion à la base de données nouvelle ou existante, ou un fichier de base de données.
    Si la table entière ne peut pas être glissée vers le formulaire, essayez champ par champ.

    Cordialement,
    Nina

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mercredi 10 mars 2021 11:29
    Modérateur
  • C'est plus embêtant que ça, là on me dit que SqlDataAdapter n'est pas dans l'espace de noms System.Data.SqlClient.

    Et en plus le projet ne trouve que la version 5.

    Je réinstalle .Net et je reviens.

    mercredi 10 mars 2021 11:47
  • Ce n'est pas aussi évident que ça devrait.

    Dans les propriétés du projet, champ "Framework cible", j'ai .Net 5.0, .Net Core 3.0, .Net Core 3.1.

    Il m'est proposé une entrée pour en installer d'autres, j'ai installé de cette manière 4.7.1, mais je ne le vois pas apparaître dans la liste.

    Il me semble bien pourtant que Visual Studio Installer a installé six ou sept versions (dont 5.0 et 4.7.1).

    Toujours est-il que le .Net 5.0 qui apparaît dans la liste n'est pas en ordre de marche, puisqu'il ne connaît pas SqlDataAdapter.

    Je crois qu'il va commencer à être temps de ne pas me tromper de chemin.

    C'est bien là que ça se passe ?

    Installation des composants individuels dans Visual Studio Installer

    Visual Studio est installé sur un SSD. Est-ce qu'il y a une partie qu'il serait mieux de mettre sur un disque dur ?

    • Modifié Gloops mercredi 10 mars 2021 13:15
    mercredi 10 mars 2021 13:06
  • On dirait qu'à ce stade trois copies d'écran peuvent s'avérer utiles.

    Le répertoire Microsoft.Net\Framework64 :

    .Net sur la machine

    L'explorateur d'objets :

    System.Data.Sql

    La liste de ciblage du projet :

    Liste de ciblage du projet

    En synthèse de tout ça je dois avouer que je n'y comprends rien, notamment la doc ne dit nulle part où se trouvent les versions de .Net qui sont installées pour Visual Studio et pas pour le système.

    Ce Vendredi je vais être occupé, donc j'attends après pour chercher sur des forums où il y a encore quelqu'un.

    *

    Je ne suis plus très sûr d'avoir précisé : j'utilise Visual Studio 2019 Community.

    Microsoft Visual Studio Community 2019
    Version 16.9.2
    VisualStudio.16.Release/16.9.2+31112.23
    Microsoft .NET Framework
    Version 4.8.04084

    Version installée : Community

    ASP.NET and Web Tools 2019   16.9.688.6828
    ASP.NET and Web Tools 2019

    ASP.NET Core Razor Language Services   16.1.0.2112521+5741df381174d72f08e3632bb99f52e8635b6a1a
    Provides languages services for ASP.NET Core Razor.

    ASP.NET Web Frameworks and Tools 2019   16.9.688.6828
    Pour plus d'informations, visitez https://www.asp.net/

    Azure Functions and Web Jobs Tools   16.9.688.6828
    Azure Functions and Web Jobs Tools

    Common Azure Tools   1.10
    Fournit des services courants utilisables par Microsoft Azure Mobile Services et Microsoft Azure Tools.

    Cookiecutter   16.9.21026.1
    Fournit des outils pour rechercher, instancier et personnaliser des modèles au format cookiecutter.

    Débogage de .NET Core avec WSL 2   1.0
    Débogage de .NET Core avec WSL 2

    Extension IntelliCode   1.0
    Informations détaillées sur l'extension Visual Studio IntelliCode

    Extensions des outils de conteneur Visual Studio   1.0
    Affichez, gérez et diagnostiquez les conteneurs dans Visual Studio.

    Gestionnaire de package NuGet   5.9.0
    Gestionnaire de package NuGet dans Visual Studio. Pour plus d'informations sur NuGet, visitez https://docs.nuget.org/

    GitHub.VisualStudio   2.11.102.28613
    A Visual Studio Extension that brings the GitHub Flow into Visual Studio.

    Microsoft Azure Tools   2.9
    Microsoft Azure Tools pour Microsoft Visual Studio 2019 - v2.9.40218.1

    Microsoft Continuous Delivery Tools pour Visual Studio   0.4
    Simplification de la configuration des pipelines Azure DevOps à partir de l'IDE Visual Studio.

    Microsoft JVM Debugger   1.0
    Provides support for connecting the Visual Studio debugger to JDWP compatible Java Virtual Machines

    Microsoft MI-Based Debugger   1.0
    Provides support for connecting Visual Studio to MI compatible debuggers

    MySQL for Visual Studio   1.2.9
    Data design and management tools for MySQL. Copyright (c) 2007, 2019, Oracle and/or its affiliates. All rights reserved.

    Node.js Tools   1.5.21130.2 Commit Hash:dacc0e71a5e060cdcab466a301cacea359c1b6da
    Ajoute la prise en charge du développement et du débogage d'applications Node.js dans Visual Studio

    Outils Azure App Service v3.0.0   16.9.688.6828
    Outils Azure App Service v3.0.0

    Outils C#   3.9.0-6.21160.10+59eedc33d35754759994155ea2f4e1012a9951e3
    Composants C# utilisés dans l'IDE. Selon votre type de projet et vos paramètres, une version différente du compilateur peut être utilisée.

    Outils et frameworks web ASP.NET 2012   16.9.688.6828
    Pour plus d'informations, visitez https://www.asp.net/

    Outils TypeScript   16.0.30201.2001
    Outils TypeScript pour Microsoft Visual Studio

    Outils Visual Basic   3.9.0-6.21160.10+59eedc33d35754759994155ea2f4e1012a9951e3
    Composants Visual Basic utilisés dans l'IDE. Selon votre type de projet et vos paramètres, une version différente du compilateur peut être utilisée.

    Package hôte de l'adaptateur de débogage de Visual Studio Code   1.0
    Couche d'interopérabilité pour l'hébergement d'adaptateurs de débogage Visual Studio Code dans Visual Studio

    ProjectServicesPackage Extension   1.0
    ProjectServicesPackage Visual Studio Extension Detailed Info

    Python   16.9.21026.1
    Fournit IntelliSense, des projets, des modèles, le débogage, des fenêtres interactives et du support pour les développeurs Python.

    Python - Prise en charge Django   16.9.21026.1
    Fournit des modèles et une intégration pour le framework web Django.

    Python - Prise en charge du profilage   16.9.21026.1
    Prise en charge du profilage pour les projets Python.

    Python - Prise en charge IronPython   16.9.21026.1
    Fournit des modèles et une intégration pour les projets basés sur IronPython.

    Python - Prise en charge de Conda   16.9.21026.1
    Prise en charge de Conda pour les projets Python.

    SQL Server Data Tools   16.0.62103.10080
    Microsoft SQL Server Data Tools

    Visual F# Tools   16.9.0-beta.21102.9+7ce7132f1459095e635194d09d6f73265352029a
    Microsoft Visual F# Tools

    Visual Studio Tools pour Conteneurs   1.0
    Visual Studio Tools pour Conteneurs

    Visual Studio Tools pour Docker   1.1
    Développez, exécutez et validez vos applications ASP.NET Core dans l'environnement cible. Appuyez sur F5 pour exécuter votre application directement dans un conteneur avec débogage ou sur CTRL+F5 pour modifier et actualiser votre application sans avoir à recréer le conteneur.



    • Modifié Gloops jeudi 18 mars 2021 22:42
    jeudi 18 mars 2021 22:25
  • À tâtons j'ai pu un peu faire progresser les choses.

    System.Data.SqlClient est proposé par NuGet,

    ainsi que Microsoft .NET Framework Reference Assemblies.net472

    Visual Studio avait quelques mises à jour.

    Après redémarrage de Visual Studio, déjà beaucoup moins d'erreurs.

    Un composant est incompatible avec la version 32 bits de mon processeur, alors j'ai restreint la compilation à la version 64 bits. Quand il y aura du monde on creusera un peu, ça.

    Le glissé de souris de la table, de l'explorateur de serveurs vers le formulaire, n'a toujours pas de succès.

    J'attaque la boîte de dialogue dans la balise active. Dans "Project Data Sources", Dataset1 est inconnu, mais Dataset2 apparaît, même si chacun des deux Datasets fait apparaître des données dans son interface graphique (pas les mêmes).

    Donc je peux sélectionner Dataset2, mais quand je fais ça j'ai un problème : "La" référence d'objet n'est pas définie à une instance d'un objet. Et Visual Studio se ferme. C'est moi qui me suis trompé, ou un composant aurait dû s'occuper d'instancier l'objet ?

    Je n'ai pas d'erreur signalée avec ceci :

    Dataset2 ds = null;

            private void Form1_Load(object sender, EventArgs e)
            {
                ds = new DataSet2();
                SqlConnection cn = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=PlatContext;Integrated Security=True");
                cn.Open();
                SqlCommand cmd = new SqlCommand("SELECT * FROM Plats", cn);
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr.HasRows)
                {
                    dr.Read();
                    string text = dr[1].ToString();
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    dr.Close();
                    da.Fill(ds, "Plats");
                }
                cn.Close();
                listBox1.DataSource = ds.Plats;
                this.listBox1.DisplayMember = "IntitulePlat";
                this.listBox1.ValueMember = "IdPlat";
            }

    et les données apparaissent bien dans la liste, comme ça. Datareader n'est là que pour vérifier si il y a des données, il doit y avoir une solution plus élégante.

    Mais l'aspect "glissé de souris magique" n'apparaît pas de façon évidente.

    Donc alors je repose la question : "qui dit mieux ?"




    • Modifié Gloops vendredi 19 mars 2021 02:10
    vendredi 19 mars 2021 00:46