OVH Cloud OVH Cloud

Largeur des colonnes dans un DataGrid

6 réponses
Avatar
ACH
Bonjour,
Mon application VB comporte un DataGrid pour visualiser un=20
DataSet contenant une DataTable contenant elle-m=EAme deux=20
DataColomn.
Les deux colonnes sont ajout=E9es dynamiquement =E0 la table=20
par l'op=E9rateur "Add".
La table est ajout=E9e au DataSet par l'op=E9rateur "Add".
Le DataSet est plac=E9 dans le DataGrid par "SetDataBinding".

Les deux colonnes apparaissent dans le DataGrid avec des=20
largeurs identiques.
Comment puis-je modifier leur largeur ?
Et =E9galement leur hauteur ?

Merci beaucoup
Alain

6 réponses

Avatar
Zoury
Salut Alain! :O)

regarde cette discussion
http://groups.google.com/groups?threadm=N03AKpH6CHA.1728%40cpmsftngxa06

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic classique
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
"ACH" a écrit dans le message de
news:2c14101c468f7$56b85bb0$
Bonjour,
Mon application VB comporte un DataGrid pour visualiser un
DataSet contenant une DataTable contenant elle-même deux
DataColomn.
Les deux colonnes sont ajoutées dynamiquement à la table
par l'opérateur "Add".
La table est ajoutée au DataSet par l'opérateur "Add".
Le DataSet est placé dans le DataGrid par "SetDataBinding".

Les deux colonnes apparaissent dans le DataGrid avec des
largeurs identiques.
Comment puis-je modifier leur largeur ?
Et également leur hauteur ?

Merci beaucoup
Alain
Avatar
Zoury
ou encore sur le site proposée tantôt ... section Windows Forms DataGrid
http://www.syncfusion.com/FAQ/WinForms/default.asp#44

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic classique
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
"ACH" a écrit dans le message de
news:2c14101c468f7$56b85bb0$
Bonjour,
Mon application VB comporte un DataGrid pour visualiser un
DataSet contenant une DataTable contenant elle-même deux
DataColomn.
Les deux colonnes sont ajoutées dynamiquement à la table
par l'opérateur "Add".
La table est ajoutée au DataSet par l'opérateur "Add".
Le DataSet est placé dans le DataGrid par "SetDataBinding".

Les deux colonnes apparaissent dans le DataGrid avec des
largeurs identiques.
Comment puis-je modifier leur largeur ?
Et également leur hauteur ?

Merci beaucoup
Alain
Avatar
ACH
Merci beaucoup pour ces précieuses informations.
Les mécanismes des DataGrid sont très complexes.
J'ai essayé la méthode indiquée au chap. 5.35 mais sans
succès. Je pense avoir fait un oubli mais je ne comprends
pas lequel.
Je me permet de mettre ci-dessous un peu de code. Peut-
être verrez-vous le problème. Merci d'avance.

' Code automatique
.......
.......
Me.DataGrid1.TableStyles.AddRange(New
System.Windows.Forms.DataGridTableStyle() {Me.ListeImages})
'
'ListeImages
'
Me.ListeImages.DataGrid = Me.DataGrid1
Me.ListeImages.GridColumnStyles.AddRange(New
System.Windows.Forms.DataGridColumnStyle()
{Me.ColonneImages, Me.ColonneTextes})
Me.ListeImages.HeaderForeColor =
System.Drawing.SystemColors.ControlText
Me.ListeImages.MappingName = "Style1"
'
'ColonneImages
'
Me.ColonneImages.Format = ""
Me.ColonneImages.FormatInfo = Nothing
Me.ColonneImages.MappingName = ""
Me.ColonneImages.Width = 75
'
'ColonneTextes
'
Me.ColonneTextes.Format = ""
Me.ColonneTextes.FormatInfo = Nothing
Me.ColonneTextes.MappingName = ""
Me.ColonneTextes.Width = 200
'

'======================== ==============
'Génération des données
Private Sub MakeData()
Dim ds As New DataSet("DS1")
Dim dt As New DataTable("ListImages")

' Créer deux colonnes dans la table.
dt.Columns.Add(New DataColumn("Images", GetType
(String)))
dt.Columns.Add(New DataColumn("Commentaires",
GetType(String)))

' Créer et remplir les lignes de la table.
Dim newRow As DataRow
For i As Integer = 1 To 20
newRow = dt.NewRow()
newRow("Images") = "Image " + i.ToString("#00")
newRow("Commentaires") = "Commentaire " +
i.ToString("#00")
dt.Rows.Add(newRow)
Next i

' Add la table au DataSet.
ds.Tables.Add(dt)
' Add le DataSet au DataGrid et montrer la table
DataGrid1.SetDataBinding(ds, "ListImages")
DataGrid1.DataSource = ds.Tables("ListImages")

End Sub

'======================== =================
'Changement de largeur de la colone 1,
'qui reste sans effet visuel.....
Dim ts As DataGridTableStyle
ts = DataGrid1.TableStyles("Style1")
ts.GridColumnStyles(1).Width = 500
ts.DataGrid.Refresh()


Merci de votre aide.
Alain

-----Message d'origine-----
ou encore sur le site proposée tantôt ... section Windows


Forms DataGrid
http://www.syncfusion.com/FAQ/WinForms/default.asp#44

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic classique
http://faq.vb.free.fr/?rubrique=0 -


http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/
"ACH" a écrit dans


le message de
news:2c14101c468f7$56b85bb0$
Bonjour,
Mon application VB comporte un DataGrid pour visualiser un
DataSet contenant une DataTable contenant elle-même deux
DataColomn.
Les deux colonnes sont ajoutées dynamiquement à la table
par l'opérateur "Add".
La table est ajoutée au DataSet par l'opérateur "Add".
Le DataSet est placé dans le DataGrid


par "SetDataBinding".

Les deux colonnes apparaissent dans le DataGrid avec des
largeurs identiques.
Comment puis-je modifier leur largeur ?
Et également leur hauteur ?

Merci beaucoup
Alain


.



Avatar
Zoury
ReSalut! :O)

Voici le code minimum pour y parvenir..
'***
Imports System.Data
Imports System.Data.SqlClient

Public Class Form1
Inherits System.Windows.Forms.Form

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

' initialise le datatable
Dim dt As New DataTable
dt.Columns.Add("Nom", Type.GetType("System.String"))
dt.Columns.Add("Prénom", Type.GetType("System.String"))

' initialise le grid
DataGrid1.DataSource = dt ' source de donnée
DataGrid1.TableStyles.Add(New DataGridTableStyle) ' on créer on
style

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click

' double la taille de la première colonne
DataGrid1.TableStyles(0).GridColumnStyles(0).Width = _
DataGrid1.TableStyles(0).GridColumnStyles(0).Width * 2

End Sub

End Class
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic classique
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
"ACH" a écrit dans le message de
news:2d10d01c4697d$d8d80240$
Merci beaucoup pour ces précieuses informations.
Les mécanismes des DataGrid sont très complexes.
J'ai essayé la méthode indiquée au chap. 5.35 mais sans
succès. Je pense avoir fait un oubli mais je ne comprends
pas lequel.
Je me permet de mettre ci-dessous un peu de code. Peut-
être verrez-vous le problème. Merci d'avance.

' Code automatique
.......
.......
Me.DataGrid1.TableStyles.AddRange(New
System.Windows.Forms.DataGridTableStyle() {Me.ListeImages})
'
'ListeImages
'
Me.ListeImages.DataGrid = Me.DataGrid1
Me.ListeImages.GridColumnStyles.AddRange(New
System.Windows.Forms.DataGridColumnStyle()
{Me.ColonneImages, Me.ColonneTextes})
Me.ListeImages.HeaderForeColor System.Drawing.SystemColors.ControlText
Me.ListeImages.MappingName = "Style1"
'
'ColonneImages
'
Me.ColonneImages.Format = ""
Me.ColonneImages.FormatInfo = Nothing
Me.ColonneImages.MappingName = ""
Me.ColonneImages.Width = 75
'
'ColonneTextes
'
Me.ColonneTextes.Format = ""
Me.ColonneTextes.FormatInfo = Nothing
Me.ColonneTextes.MappingName = ""
Me.ColonneTextes.Width = 200
'

'===================================== 'Génération des données
Private Sub MakeData()
Dim ds As New DataSet("DS1")
Dim dt As New DataTable("ListImages")

' Créer deux colonnes dans la table.
dt.Columns.Add(New DataColumn("Images", GetType
(String)))
dt.Columns.Add(New DataColumn("Commentaires",
GetType(String)))

' Créer et remplir les lignes de la table.
Dim newRow As DataRow
For i As Integer = 1 To 20
newRow = dt.NewRow()
newRow("Images") = "Image " + i.ToString("#00")
newRow("Commentaires") = "Commentaire " +
i.ToString("#00")
dt.Rows.Add(newRow)
Next i

' Add la table au DataSet.
ds.Tables.Add(dt)
' Add le DataSet au DataGrid et montrer la table
DataGrid1.SetDataBinding(ds, "ListImages")
DataGrid1.DataSource = ds.Tables("ListImages")

End Sub

'======================================== 'Changement de largeur de la colone 1,
'qui reste sans effet visuel.....
Dim ts As DataGridTableStyle
ts = DataGrid1.TableStyles("Style1")
ts.GridColumnStyles(1).Width = 500
ts.DataGrid.Refresh()


Merci de votre aide.
Alain

-----Message d'origine-----
ou encore sur le site proposée tantôt ... section Windows


Forms DataGrid
http://www.syncfusion.com/FAQ/WinForms/default.asp#44

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic classique
http://faq.vb.free.fr/?rubrique=0 -


http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/
"ACH" a écrit dans


le message de
news:2c14101c468f7$56b85bb0$
Bonjour,
Mon application VB comporte un DataGrid pour visualiser un
DataSet contenant une DataTable contenant elle-même deux
DataColomn.
Les deux colonnes sont ajoutées dynamiquement à la table
par l'opérateur "Add".
La table est ajoutée au DataSet par l'opérateur "Add".
Le DataSet est placé dans le DataGrid


par "SetDataBinding".

Les deux colonnes apparaissent dans le DataGrid avec des
largeurs identiques.
Comment puis-je modifier leur largeur ?
Et également leur hauteur ?

Merci beaucoup
Alain


.



Avatar
ACH
OUF !

Merci beaucoup Yanick de votre aide précieuse. Maintenant
ça fonctionne correctement (en largeur).

J'ai placé l'initialisation dans la procédure Public
Sub "New", plutôt que dans Form1_Load.

Y a t'il avantage à l'un plutôt qu'à l'autre ?

Merci encore

-----Message d'origine-----
ReSalut! :O)

Voici le code minimum pour y parvenir..
'***
Imports System.Data
Imports System.Data.SqlClient

Public Class Form1
Inherits System.Windows.Forms.Form

Private Sub Form1_Load(ByVal sender As System.Object,


ByVal e As
System.EventArgs) Handles MyBase.Load

' initialise le datatable
Dim dt As New DataTable
dt.Columns.Add("Nom", Type.GetType


("System.String"))
dt.Columns.Add("Prénom", Type.GetType


("System.String"))

' initialise le grid
DataGrid1.DataSource = dt ' source de donnée
DataGrid1.TableStyles.Add(New


DataGridTableStyle) ' on créer on
style

End Sub

Private Sub Button1_Click(ByVal sender As


System.Object, ByVal e As
System.EventArgs) Handles Button1.Click

' double la taille de la première colonne
DataGrid1.TableStyles(0).GridColumnStyles


(0).Width = _
DataGrid1.TableStyles(0).GridColumnStyles


(0).Width * 2

End Sub

End Class
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic classique
http://faq.vb.free.fr/?rubrique=0 -


http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/
"ACH" a écrit dans


le message de
news:2d10d01c4697d$d8d80240$
Merci beaucoup pour ces précieuses informations.
Les mécanismes des DataGrid sont très complexes.
J'ai essayé la méthode indiquée au chap. 5.35 mais sans
succès. Je pense avoir fait un oubli mais je ne comprends
pas lequel.
Je me permet de mettre ci-dessous un peu de code. Peut-
être verrez-vous le problème. Merci d'avance.

' Code automatique
........
........
Me.DataGrid1.TableStyles.AddRange(New
System.Windows.Forms.DataGridTableStyle()


{Me.ListeImages})
'
'ListeImages
'
Me.ListeImages.DataGrid = Me.DataGrid1
Me.ListeImages.GridColumnStyles.AddRange(New
System.Windows.Forms.DataGridColumnStyle()
{Me.ColonneImages, Me.ColonneTextes})
Me.ListeImages.HeaderForeColor =
System.Drawing.SystemColors.ControlText
Me.ListeImages.MappingName = "Style1"
'
'ColonneImages
'
Me.ColonneImages.Format = ""
Me.ColonneImages.FormatInfo = Nothing
Me.ColonneImages.MappingName = ""
Me.ColonneImages.Width = 75
'
'ColonneTextes
'
Me.ColonneTextes.Format = ""
Me.ColonneTextes.FormatInfo = Nothing
Me.ColonneTextes.MappingName = ""
Me.ColonneTextes.Width = 200
'

'======================== ==============
'Génération des données
Private Sub MakeData()
Dim ds As New DataSet("DS1")
Dim dt As New DataTable("ListImages")

' Créer deux colonnes dans la table.
dt.Columns.Add(New DataColumn("Images", GetType
(String)))
dt.Columns.Add(New DataColumn("Commentaires",
GetType(String)))

' Créer et remplir les lignes de la table.
Dim newRow As DataRow
For i As Integer = 1 To 20
newRow = dt.NewRow()
newRow("Images") = "Image " + i.ToString


("#00")
newRow("Commentaires") = "Commentaire " +
i.ToString("#00")
dt.Rows.Add(newRow)
Next i

' Add la table au DataSet.
ds.Tables.Add(dt)
' Add le DataSet au DataGrid et montrer la table
DataGrid1.SetDataBinding(ds, "ListImages")
DataGrid1.DataSource = ds.Tables("ListImages")

End Sub

'======================== =================
'Changement de largeur de la colone 1,
'qui reste sans effet visuel.....
Dim ts As DataGridTableStyle
ts = DataGrid1.TableStyles("Style1")
ts.GridColumnStyles(1).Width = 500
ts.DataGrid.Refresh()


Merci de votre aide.
Alain

-----Message d'origine-----
ou encore sur le site proposée tantôt ... section Windows


Forms DataGrid
http://www.syncfusion.com/FAQ/WinForms/default.asp#44

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic classique
http://faq.vb.free.fr/?rubrique=0 -


http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/
"ACH" a écrit dans


le message de
news:2c14101c468f7$56b85bb0$
Bonjour,
Mon application VB comporte un DataGrid pour visualiser




un
DataSet contenant une DataTable contenant elle-même deux
DataColomn.
Les deux colonnes sont ajoutées dynamiquement à la table
par l'opérateur "Add".
La table est ajoutée au DataSet par l'opérateur "Add".
Le DataSet est placé dans le DataGrid


par "SetDataBinding".

Les deux colonnes apparaissent dans le DataGrid avec des
largeurs identiques.
Comment puis-je modifier leur largeur ?
Et également leur hauteur ?

Merci beaucoup
Alain


.





.



Avatar
Zoury
> J'ai placé l'initialisation dans la procédure Public
Sub "New", plutôt que dans Form1_Load.

Y a t'il avantage à l'un plutôt qu'à l'autre ?



Le New() se déclenche lors de l'instanciation du formulaire (objet logique)
alors que le Load() se déclenche lorsque se dernier est chargé en mémoire
(création des objets graphiques en mémoire). Si tu charges tes données dans
le New, alors tu occuperas de l'espace mémoire inutilement jusqu'à ce que le
formulaire chargé et affiché...

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/