OVH Cloud OVH Cloud

Datagrid + colonne triée

2 réponses
Avatar
Denis
Bonjour à tous ceux qui ne sont pas (encore) en vacances, voici les derniers
problèmes qui m'empêchent de liver mon appli avant de partir au soleil.

J'ai un dataset avec 2 colonnes (COUT_DATE,MONTANT).
Sur la defaultview du dataset, je configure le tri
-> MyDataSet.Table("COUT").DefaultView.Sort = "COUT_DATE DESC")
Ensuite, je lie la datagrid et le dataset
- > DataGrid1.SetDataBinding(MyDataSet,"COUT")

J'applique un TableStyle à ma datagrid.

Ensuite, c'est la pagaille ...

1er problème:
Mon dataset est bien trié par ordre décroissant sur la date mais ma datagrid
affiche les données par ordre croissant !
Vérifié avec le contenu de :
myDataSet.Tables("COUT").DefaultView(DataGrid1.CurrentRowIndex)("COUT")

2ème problème (lié au 1er):
Lorsque je clique sur l'entête de colonne du datagrid pour changer l'ordre,
mon dataset, lui, reste trié comme à l'origine. Du coup, si l'ordre de tri
de la datagrid est l'opposé du tri du dataset, la première ligne du datagrid
correspond à la dernière ligne du dataset! Pratique pour récupérer des infos !
Dans quel événement de la datagrid faut-il refaire le tri de la DefaultView
du DataSet ou y a t-il une propriété qui permet de synchroniser les 2 objets ?

3ème problème:
J'insère des données dans mon DataSet à l'aide d'une DataRow
-> MyDataSet.Tables("COUT").Rows.Add(MyRow)
Les données s'insèrent correctement mais viennent s'ajouter en fin de
DataGrid.
Comment faire pour que la DataGrid se retrie immédiatement en fonction de la
colonne et de l'ordre en place ?

Aloha, 2nis.

2 réponses

Avatar
armin
Salut le specialiste ( enfin je l'espere) du datagrid.

avec tes conseilsj'en suis la :

Dim T As New DataTable

Dim TS As New DataGridTableStyle

Dim TC1 As New DataGridTextBoxColumn

Dim TC2 As New DataGridTextBoxColumn



'' creation du datatable







T.TableName = "toto"

TS.MappingName = T.TableName



TC1.MappingName = "Colonne1"

TC1.HeaderText = "C1"

TC1.Width = 75



TC2.MappingName = "Colonne2"

TC2.HeaderText = "C2"

TC2.Width = 10



TS.GridColumnStyles.Add(TC1)

TS.GridColumnStyles.Add(TC2)





DataGrid1.TableStyles.Clear()

DataGrid1.TableStyles.Add(TS)



ça me parrait pas mal, mais il doit en manquer un petit bout, car ça plante
avec le message :



Le DataGridColumnStyle 'C1' ne peut pas être utilisé car il n'est pas
associé à une propriété ou à une colonne dans DataSource.



saurais tu m'aider?



a+



Armin





"Denis" a écrit dans le message de news:

Bonjour à tous ceux qui ne sont pas (encore) en vacances, voici les


derniers
problèmes qui m'empêchent de liver mon appli avant de partir au soleil.

J'ai un dataset avec 2 colonnes (COUT_DATE,MONTANT).
Sur la defaultview du dataset, je configure le tri
-> MyDataSet.Table("COUT").DefaultView.Sort = "COUT_DATE DESC")
Ensuite, je lie la datagrid et le dataset
- > DataGrid1.SetDataBinding(MyDataSet,"COUT")

J'applique un TableStyle à ma datagrid.

Ensuite, c'est la pagaille ...

1er problème:
Mon dataset est bien trié par ordre décroissant sur la date mais ma


datagrid
affiche les données par ordre croissant !
Vérifié avec le contenu de :
myDataSet.Tables("COUT").DefaultView(DataGrid1.CurrentRowIndex)("COUT")

2ème problème (lié au 1er):
Lorsque je clique sur l'entête de colonne du datagrid pour changer


l'ordre,
mon dataset, lui, reste trié comme à l'origine. Du coup, si l'ordre de


tri
de la datagrid est l'opposé du tri du dataset, la première ligne du


datagrid
correspond à la dernière ligne du dataset! Pratique pour récupérer des


infos !
Dans quel événement de la datagrid faut-il refaire le tri de la


DefaultView
du DataSet ou y a t-il une propriété qui permet de synchroniser les 2


objets ?

3ème problème:
J'insère des données dans mon DataSet à l'aide d'une DataRow
-> MyDataSet.Tables("COUT").Rows.Add(MyRow)
Les données s'insèrent correctement mais viennent s'ajouter en fin de
DataGrid.
Comment faire pour que la DataGrid se retrie immédiatement en fonction de


la
colonne et de l'ordre en place ?

Aloha, 2nis.




Avatar
Denis
La réponse est postée dans l'autre post, celui de ta question !

2nis


"armin" a écrit dans le message de news:
uqvL%
Salut le specialiste ( enfin je l'espere) du datagrid.

avec tes conseilsj'en suis la :

Dim T As New DataTable

Dim TS As New DataGridTableStyle

Dim TC1 As New DataGridTextBoxColumn

Dim TC2 As New DataGridTextBoxColumn



'' creation du datatable







T.TableName = "toto"

TS.MappingName = T.TableName



TC1.MappingName = "Colonne1"

TC1.HeaderText = "C1"

TC1.Width = 75



TC2.MappingName = "Colonne2"

TC2.HeaderText = "C2"

TC2.Width = 10



TS.GridColumnStyles.Add(TC1)

TS.GridColumnStyles.Add(TC2)





DataGrid1.TableStyles.Clear()

DataGrid1.TableStyles.Add(TS)



ça me parrait pas mal, mais il doit en manquer un petit bout, car ça
plante
avec le message :



Le DataGridColumnStyle 'C1' ne peut pas être utilisé car il n'est pas
associé à une propriété ou à une colonne dans DataSource.



saurais tu m'aider?



a+



Armin





"Denis" a écrit dans le message de news:

Bonjour à tous ceux qui ne sont pas (encore) en vacances, voici les


derniers
problèmes qui m'empêchent de liver mon appli avant de partir au soleil.

J'ai un dataset avec 2 colonnes (COUT_DATE,MONTANT).
Sur la defaultview du dataset, je configure le tri
-> MyDataSet.Table("COUT").DefaultView.Sort = "COUT_DATE DESC")
Ensuite, je lie la datagrid et le dataset
- > DataGrid1.SetDataBinding(MyDataSet,"COUT")

J'applique un TableStyle à ma datagrid.

Ensuite, c'est la pagaille ...

1er problème:
Mon dataset est bien trié par ordre décroissant sur la date mais ma


datagrid
affiche les données par ordre croissant !
Vérifié avec le contenu de :
myDataSet.Tables("COUT").DefaultView(DataGrid1.CurrentRowIndex)("COUT")

2ème problème (lié au 1er):
Lorsque je clique sur l'entête de colonne du datagrid pour changer


l'ordre,
mon dataset, lui, reste trié comme à l'origine. Du coup, si l'ordre de


tri
de la datagrid est l'opposé du tri du dataset, la première ligne du


datagrid
correspond à la dernière ligne du dataset! Pratique pour récupérer des


infos !
Dans quel événement de la datagrid faut-il refaire le tri de la


DefaultView
du DataSet ou y a t-il une propriété qui permet de synchroniser les 2


objets ?

3ème problème:
J'insère des données dans mon DataSet à l'aide d'une DataRow
-> MyDataSet.Tables("COUT").Rows.Add(MyRow)
Les données s'insèrent correctement mais viennent s'ajouter en fin de
DataGrid.
Comment faire pour que la DataGrid se retrie immédiatement en fonction de


la
colonne et de l'ordre en place ?

Aloha, 2nis.