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 :

ajout colonne datagrid dynamique


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 36
    Points : 24
    Points
    24
    Par défaut ajout colonne datagrid dynamique
    salut,
    je veux creer les colonnes d'une datagrid à partir du programme, selon un tableau declarer deja remplit
    il me donne aucun erreur
    mais rine n'est affiché o moment d'execution
    j'ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 0 To nbr_colonne - 1
    frm_recherche.data_recherche.Columns.Add(tab_field(i).champ, tab_field(i).caption)
    frm_recherche.data_recherche.Columns(i).Width = tab_field(i).width
    frm_recherche.data_recherche.Columns(i).Visible = tab_field(i).visible
    Next

  2. #2
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    Bonjour,

    est ce que t'a fais DataBind() pour ta DataGrid ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Redouane me = new Redouane();
    if (me.Connect())
        me.ShareInformations();

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    salam
    J'AI MIS DATASOURCE
    frm_recherche.data_recherche.DataSource = Rs_Recherche
    j'ai lui affecte un datatable

  4. #4
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    Chaque fois que tu change ton datasource, il faut faire un DataBind().

    donc ton datagrid, il a une DataSource, mais il faut la mapper avec cette dernière, genre :
    DataGrid1.DataSource = tonDataSource
    DataGrid1.DataBind()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Redouane me = new Redouane();
    if (me.Connect())
        me.ShareInformations();

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    ce que j'avais c'est datagrid.refresh
    or maintenant quand je veux mettre le databind je ne trouve pas de methode databind il ya juste databinding
    il me souligne le databind comme erreur
    merci

  6. #6
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 399
    Points : 259
    Points
    259
    Par défaut
    sauf erreur de ma part c'est seulement en asp.net que tu as besoin de

    la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataGrid1.DataSource = tonDataSource
    devrait suffire.

    et en théorie avec la source il te créer les colonnes tout seul !
    pourquoi tu fait cela dynamiquement ?

    es tu certain que ton Rs_Recherche contient des données ?
    c'est quoi comme objet ton Rs_Recherche ?

  7. #7
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    Pourquoi tu travaille avec DataGrid, pourquoi pas DataGridView ?!!
    Tu trouveras plus de fonctionnalités
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Redouane me = new Redouane();
    if (me.Connect())
        me.ShareInformations();

  8. #8
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    le rs_recherche c'est un datatable
    et il contient des données, j'ai verifié son recordcount

  9. #9
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    la grille que je veux remplir c'est de type datagridview

  10. #10
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    essaye de créer un BindingDataSource et fais une liaison de ce dernier avec une source de données (DataTable dans ton cas je pense),
    ensuite affecte le au DataSource de ton DataGrid, ci-aprés un exemple que j'ai retiré de msdn de Microsoft

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Private Sub InitializeDataGridView()
        Try
            ' Set up the DataGridView.
            With Me.dataGridView1
                ' Automatically generate the DataGridView columns.
                .AutoGenerateColumns = True
     
                ' Set up the data source.
                bindingSource1.DataSource = GetData("Select * From Products")
                .DataSource = bindingSource1
     
                ' Automatically resize the visible rows.
                .AutoSizeRowsMode = _
                    DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders
     
                ' Set the DataGridView control's border.
                .BorderStyle = BorderStyle.Fixed3D
     
                ' Put the cells in edit mode when user enters them.
                .EditMode = DataGridViewEditMode.EditOnEnter
            End With
        Catch ex As SqlException
            MessageBox.Show("To run this sample replace " _
                & "connection.ConnectionString with a valid connection string" _
                & "  to a Northwind database accessible to your system.", _
                "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            System.Threading.Thread.CurrentThread.Abort()
        End Try
    End Sub
     
    Private Shared Function GetData(ByVal sqlCommand As String) _
        As DataTable
     
        Dim connectionString As String = _
            "Integrated Security=SSPI;Persist Security Info=False;" _
            & "Initial Catalog=Northwind;Data Source=localhost"
     
        Dim northwindConnection As SqlConnection = _
            New SqlConnection(connectionString)
     
        Dim command As New SqlCommand(sqlCommand, northwindConnection)
        Dim adapter As SqlDataAdapter = New SqlDataAdapter()
        adapter.SelectCommand = command
     
        Dim table As New DataTable
        table.Locale = System.Globalization.CultureInfo.InvariantCulture
        adapter.Fill(table)
     
        Return table
     
    End Function
    pour en savoir plus :
    http://msdn.microsoft.com/fr-fr/libr...ce(VS.80).aspx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Redouane me = new Redouane();
    if (me.Connect())
        me.ShareInformations();

  11. #11
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 399
    Points : 259
    Points
    259
    Par défaut
    je pense que c'est lui compliqué la tache pour rien alors que son code de départ est juste !


    ifaza peut tu envoyer l'intégralité de ton code qu'on regarde et éventuellement le tester

  12. #12
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    c'est ca le code que j'ai
    j'ai essayer de metre le code de redouane, mais quand je l'ai lu c'est presque la même chose , il affecte un datatble au datasource
    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
     
           Dim sda = New OleDb.OleDbDataAdapter(Query, db)
            Dim i As Integer
            Dim Rs_Recherche = New DataTable
     
            sda.Fill(Rs_Recherche)
     
            g_CodeRecherche = ""
            g_TextRecherche = ""
     
            If Rs_Recherche.rows.count <= 0 Then
                Rs_Recherche.Close()
                MsgBox("Pas d'élement à afficher .... ", vbInformation, "Recherche")
                Exit Sub
            End If
            '''''''''''''''''''
            'détérminer la position des objets dans le formulaire de recherche selon le nombre de critere
     
            For i = 0 To nbr_colonne - 1
                frm_recherche.data_recherche.Columns.Add(tab_field(i).champ, tab_field(i).caption)
                frm_recherche.data_recherche.Columns(i).Width = tab_field(i).width
                frm_recherche.data_recherche.Columns(i).Visible = tab_field(i).visible
            Next
     
     
            frm_recherche.data_recherche.DataSource = Rs_Recherche
     
            frm_recherche.ShowDialog()

  13. #13
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    Tu ajoute des colonnes à ton DataGrid et aprés tu écrase tt ça, en donnant à cette dernière une autre DataSource (Rs_Recherche dans ce cas).

    je pense, qu'il faut que tu construit ta DataTable, pour qu'il accepte de nouveaux colonnes (ce que t'en a besoins -tab_field-), et à la fin affecte le comme datasource à ton DataGrid.

    Donc tt le travail seras d'abord dans une source de données comme ta DataTable.

    Tu penses quoi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Redouane me = new Redouane();
    if (me.Connect())
        me.ShareInformations();

  14. #14
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    salam
    merci Redouane, c'est ça le probleme
    c'est l'ordre, j'ai mis l'affectation du datasource au debut
    et apres j'ai ajouté les colonnes
    je pense que c'est ça la solution
    merci à vous tous
    bonne journée

  15. #15
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    je t'en prie
    fi amani Allah
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Redouane me = new Redouane();
    if (me.Connect())
        me.ShareInformations();

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

Discussions similaires

  1. Ajouter colonne dynamique datagrid
    Par Naografix dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 10/12/2014, 13h03
  2. Réponses: 0
    Dernier message: 29/10/2014, 12h02
  3. Ajout de bouton dans les en-tête de colonne DataGrid
    Par DevBaldwin dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/11/2011, 15h29
  4. Ajouter Colonne dynamique
    Par benbrisefer dans le forum SAS Base
    Réponses: 5
    Dernier message: 04/10/2011, 15h01
  5. ajouter un champ dynamiquement à une instance de table
    Par maniack dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/02/2004, 23h58

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