Largeur de colonne d'un simple DataGrid

vangou_be Messages postés 13 Date d'inscription vendredi 22 octobre 2004 Statut Membre Dernière intervention 3 janvier 2009 - 27 janv. 2005 à 22:49
APWEB Messages postés 74 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 18 octobre 2006 - 29 janv. 2005 à 13:12
Dans mon programme j'affiche un simple DataGrid.
Il est simple et j'ai choisi de ne pas le lier à un objet (mapping).
Le dataSource est donc une simple DataTable.
Voici le code: (ça peut être utile à d'autres d'ailleurs).


DataTable myTable =
new DataTable("Mon exemple");


DataColumn dc1=myTable.Columns.Add("col1",
typeof(String));


myTable.Columns.Add("col2",
typeof(String));




DataRow workRow = myTable.NewRow();


workRow["col1"] = "Smith";


workRow["col2"] = "Dupont";


myTable.Rows.Add(workRow);



this.dataGrid1.DataSource=myTable;



C'est simple et efficace.
Le problème c'est que je veux changer la largeur de certaines colonnes.
Comment faire ?
Quand je rajoute une colonne avec "myTable.Columns.Add()
", je peux récupérer un objet DataColumn, mais il n'a aucune propriété de design (width,...).
Partout je vois des exemple utilisant des TableStyles et des GridColumnsStyles, mais ils fonctionnent tous par mapping (quand on les lie à des objets). Que faire dans mon cas où je suis lié à une DataTable ?

4 réponses

APWEB Messages postés 74 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 18 octobre 2006 2
27 janv. 2005 à 23:33
Regarde la question de penchu 2 post + bas (Datagrid) , j'y ai
mis une reponse ; mais il faut que tu passes par un dataset .



AP
0
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
28 janv. 2005 à 09:36
0
vangou_be Messages postés 13 Date d'inscription vendredi 22 octobre 2004 Statut Membre Dernière intervention 3 janvier 2009
29 janv. 2005 à 12:35
Ok, je vais donc associer à mon DataGrid un DataSet plutot qu'un DataTable.
Donc je crèe un DataSet dans lequel on retrouve mon DataTable.
Ca me donne ceci:


DataSet myDataSet=
new DataSet("myDsName");


DataTable myTable =
new DataTable("MaTable");


DataColumn dc1=myTable.Columns.Add("col1",
typeof(String));


myTable.Columns.Add("col2",
typeof(String));




DataRow workRow = myTable.NewRow();


workRow["col1"] = "Smith";


workRow["col2"] = "Dupont";


myTable.Rows.Add(workRow);


myDataSet.Tables.Add(myTable);


dataGrid1.SetDataBinding(myDataSet,"MaTable");


CurrencyManager myCurrencyManager;


myCurrencyManager =(CurrencyManager) BindingContext[myDataSet, "col1"]; //exception !!


DataGridTableStyle myGridTableStyle =
new DataGridTableStyle(myCurrencyManager);


dataGrid1.TableStyles.Add(myGridTableStyle);


myGridTableStyle.GridColumnStyles[0].Width=200;

A la ligne du BindingContext malheureusement j'ai l'exception suivante:
System.ArgumentException: Impossible de créer une liste enfant pour le champ col1.

Dur dur...
0
APWEB Messages postés 74 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 18 octobre 2006 2
29 janv. 2005 à 13:12
Parce que le BindingContext fait reference a la table .

Remplace par .....BindingContext[myDataSet,"MaTable"];



AP
0
Rejoignez-nous