OVH Cloud OVH Cloud

dimensionement colonne dans un datagrid

2 réponses
Avatar
armin
Salut !

je suis en train de re ecrire une application qui était fait en VBA sous
access, et certains fonctions d'access me manque terriblement.

pour afficher des donnes dans une liste multicolonne, j'essai d'utiliser un
datagrid, a premier vue pas trop mal pour ca.

mais comment affecter par programmation au moment de la creation/remplissage
du datagrid des largeurs de colonne fixe pour les colonnes, et different
d'une colonne a l'autre?

si quelqu'un a une idée?

P.S. : le principe que j'utilise pour remplir le datagrid :

Dim T As New DataTable

Dim Col As DataColumn

Dim Lig As DataRow

Dim I As Integer

Col = New DataColumn

Col.ColumnName = "col1"

T.Columns.Add(Col)

Col = New DataColumn

Col.ColumnName = "col2"

T.Columns.Add(Col)

For I = 1 To 20

Lig = T.NewRow

T.Rows.Add(Lig)

Next I

DataGrid1.DataSource = T

For I = 0 To 19

DataGrid1.Item(I, 0) = "a" & CStr(I)

DataGrid1.Item(I, 1) = "b" & CStr(I)

Next I

2 réponses

Avatar
Denis
Salut,

En créant un TableStyle pour ta Datagrid, tu pourras définir plein de choses
pour ta DataGrid (entête de colonne, type de colonne, modifiables ou pas,
couleurs, possibilité de trier ou non, ordre des colonnes, etc... et ce qui
t'intéresse, la largeur de chaque colonne)

Aloha, 2nis

"armin" wrote:

Salut !

je suis en train de re ecrire une application qui était fait en VBA sous
access, et certains fonctions d'access me manque terriblement.

pour afficher des donnes dans une liste multicolonne, j'essai d'utiliser un
datagrid, a premier vue pas trop mal pour ca.

mais comment affecter par programmation au moment de la creation/remplissage
du datagrid des largeurs de colonne fixe pour les colonnes, et different
d'une colonne a l'autre?

si quelqu'un a une idée?

P.S. : le principe que j'utilise pour remplir le datagrid :

Dim T As New DataTable

Dim Col As DataColumn

Dim Lig As DataRow

Dim I As Integer

Col = New DataColumn

Col.ColumnName = "col1"

T.Columns.Add(Col)

Col = New DataColumn

Col.ColumnName = "col2"

T.Columns.Add(Col)

For I = 1 To 20

Lig = T.NewRow

T.Rows.Add(Lig)

Next I

DataGrid1.DataSource = T

For I = 0 To 19

DataGrid1.Item(I, 0) = "a" & CStr(I)

DataGrid1.Item(I, 1) = "b" & CStr(I)

Next I





Avatar
Denis
Je reviens dans le bon post !!!!

Voici un exemple qui fonctionne
La datagrid est liée à un tableau d'objets et non à une Table mais le
système est le même

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

Dim c1 As New Customer()
Dim c2 As New Customer()

c1.Name = "Titi"
c2.Name = "Toto"
c1.Importance = 20
c2.Importance = 80


Dim cust() As Customer = {c1, c2}
DataGrid1.DataSource = cust

Dim t1 As DataGridTextBox = New DataGridTextBox()

Dim ts1 As DataGridTableStyle = New DataGridTableStyle()
ts1.MappingName = DataGrid1.DataSource.GetType.Name

Dim NameCol As DataGridTextBoxColumn = New DataGridTextBoxColumn()
NameCol.MappingName = "Name"
NameCol.HeaderText = "Name"
NameCol.Width = 75
NameCol.ReadOnly = True
ts1.GridColumnStyles.Add(NameCol)

Dim ImportanceCol As DataGridTextBoxColumn = New
DataGridTextBoxColumn()

ImportanceCol.MappingName = "Importance"
ImportanceCol.HeaderText = "Importance"
ts1.GridColumnStyles.Add(ImportanceCol)

DataGrid1.TableStyles.Add(ts1)

End Sub

Public Class Customer


Dim _name As String
Dim _importance As Integer


Public Property Name() As String
Get
Return _name
End Get
Set(ByVal Value As String)
_name = Value
End Set
End Property

Public Property Importance() As Integer
Get
Return _importance
End Get
Set(ByVal Value As Integer)
_importance = Value
End Set
End Property


End Class

"armin" wrote:

Salut !

je suis en train de re ecrire une application qui était fait en VBA sous
access, et certains fonctions d'access me manque terriblement.

pour afficher des donnes dans une liste multicolonne, j'essai d'utiliser un
datagrid, a premier vue pas trop mal pour ca.

mais comment affecter par programmation au moment de la creation/remplissage
du datagrid des largeurs de colonne fixe pour les colonnes, et different
d'une colonne a l'autre?

si quelqu'un a une idée?

P.S. : le principe que j'utilise pour remplir le datagrid :

Dim T As New DataTable

Dim Col As DataColumn

Dim Lig As DataRow

Dim I As Integer

Col = New DataColumn

Col.ColumnName = "col1"

T.Columns.Add(Col)

Col = New DataColumn

Col.ColumnName = "col2"

T.Columns.Add(Col)

For I = 1 To 20

Lig = T.NewRow

T.Rows.Add(Lig)

Next I

DataGrid1.DataSource = T

For I = 0 To 19

DataGrid1.Item(I, 0) = "a" & CStr(I)

DataGrid1.Item(I, 1) = "b" & CStr(I)

Next I