URGENT, colonnes datagrid

Signaler
Messages postés
6
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
18 février 2005
-
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
-
Bonjour ou bonsoir :)

Je galère depuis un certain temps sur un problème qui peut paraître tout bête, et dont la solution est sûrement évidente, mais malgré mon acharnement je ne trouve toujours la cause du problème:

Je travaille en C# avec une base de données. J'ai des datagrid qui affichent mes données, mais je n arrive pas à changer la largeur des colonnes de mon datagrid.
J'ai tout essayé, j'ai lu plein de posts sur les Tablestyles et toujours rien.
J'ai beau ajouter un tablestyle à mon datagrid, et ajouter un typage de colonne a mon tablestyle, ca fait rien du tout, comme ci mon tablestyle n'etait pas appliqué.

voici mon code:

DataGridTableStyle TSAuthors =
new
DataGridTableStyle();
TSAuthors.MappingName = "ds";
DataGridColumnStyle TCFirstName =
new DataGridTextBoxColumn();
TCFirstName.MappingName = " AV_FName";
TCFirstName.HeaderText = "First Name";
TCFirstName.Width = 500;
TSAuthors.GridColumnStyles.Add(TCFirstName);

dataGrid1.TableStyles.Add(TSAuthors);
dataGrid1.Update();

et voila et ca fait ... rien pourquoi ? :d

8 réponses

Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005

Salut,

Regarde ici ca peut peut etre t'aider

http://www.csharpfr.com/forum.v2.aspx?ID=379675&nb=3

hum.......
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
tu ajoute un datagridtablestyle a ton datagrid (ici dg_liste_ville)


DataGridTableStyle DgTableStyle =
new DataGridTableStyle (
true);


DgTableStyle.MappingName = "T_INSEE" ;


dg_Liste_ville.TableStyles.Add(DgTableStyle);


dg_Liste_ville.TableStyles["T_INSEE"].ColumnHeadersVisible =
true;


//Largeur des colonnes et nom de Colonnes


dg_Liste_ville.TableStyles["T_INSEE"].GridColumnStyles["INSCOD"].HeaderText = "Code Insee";


dg_Liste_ville.TableStyles["T_INSEE"].GridColumnStyles["INSCOD"].Width = 85;


dg_Liste_ville.TableStyles["T_INSEE"].GridColumnStyles["INSCP"].HeaderText = "Code Postal";


dg_Liste_ville.TableStyles["T_INSEE"].GridColumnStyles["INSCP"].Width = 85;


dg_Liste_ville.TableStyles["T_INSEE"].GridColumnStyles["INSLIB"].HeaderText = "Nom de la Ville";


dg_Liste_ville.TableStyles["T_INSEE"].GridColumnStyles["INSLIB"].Width = 250;

et voilou...


Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
6
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
18 février 2005

(je precise que je travaille en WinForm)
Merci Arthenius,

Mais ca ne marche toujours pas. J'ai copié collé ton code, tout bien vérifié et meme fait un update de la datagrid a la fin par superstition et rien ...

Les colonnes ne bougent pas, comme ci j'avais rien fait.

Est ce qu'il y a quelque chose que je ne fait pas ?
les noms des colonnes( ["INSLIB"] par exemple) est ce que ca correspond aux noms que je mets dans mes champs dans ma requete ? ou est ce que je peux mettre ce que je veux ?

Je sais pas aidez moi ou je vais me suicider, ca fait 2 semaines que je cherche et je toruve pas ...
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
pour le suicide attend encore un peu...
oui INSLIB coorespond aux colonnes de ton select...
faut pas mettre n'imp...

tu dis : "meme fait un update de la datagrid a la fin par superstition et rien "

cad ???

fille un bout de code ca aiderait a comprendre ton pb...

Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
6
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
18 février 2005

Tout d'abord merci de vos réponses
Voici exactement mon code (attention c'est long mais cest juste des copiés collé):

//ma requete
string text = "SELECT boite.id_boite as Id, boite.num_boite AS NumBoite, famille.nom_famille AS Famille, boite.libelle1 AS Lib1, boite.libelle2 AS Lib2, boite.libelle3 AS Lib3,
conteneur.num_conteneur AS Conteneur, boite.etat_boite AS Etat, boite.date_creation AS Creation, boite.date_expiration AS Destruction,
emplacement.site + emplacement.niveau + emplacement.travee + emplacement.[module] + emplacement.etagere AS Emplacement
FROM boite INNER JOIN
famille ON boite.id_famille = famille.id_famille INNER JOIN
conteneur ON boite.id_conteneur = conteneur.id_conteneur INNER JOIN
emplacement ON conteneur.id_emplacement = emplacement.id_emplacement INNER JOIN societe ON boite.id_societe societe.id_societe AND boite.id_societe societe.id_societe
WHERE (societe.id_societe = '10051415') and boite.etat_boite <> 'NOUVELLE'"

//je cree ma connexion
sql_com = new SqlCommand();
sql_com.CommandText = text;
sql_com.Connection = sql_conn;
SqlDataAdapter sql_adapter = new SqlDataAdapter();
sql_adapter.SelectCommand = sql_com;
sql_conn.Close();
sql_conn.Open();
sql_adapter.Fill(v_ds);
sql_conn.Close();


dt2 =
new DataTable("ds");
dt2 = v_ds.table[0];
//je retire la colonne 0 car je ne veux pas la fficher
dt2.Columns.RemoveAt(0);
//tout ce qui qui est avant cette ligne foncitonne, les données sont bien présentes dans ma datagrid1

//et voila le gros probleme ... la taille des mes colonnes :(
//1.Create a DataGridTableStyle object.
DataGridTableStyle TSAuthors =
new DataGridTableStyle();

//2.Set the grid table object's MappingName to a DataTable object's TableName.
TSAuthors.MappingName = "ds";

//3.Add DataGridColumnStyle objects, one for each grid column you want to show, to the GridColumnStylesCollection returned by the GridColumnStyles property.
//4.Set the MappingName of each DataGridColumnStyle object to the ColumnName of a DataColumn. DataGridColumnStyle TCFirstName =
new DataGridTextBoxColumn();
TCFirstName.MappingName = "NumBoite";
TCFirstName.HeaderText = "NumBoite";
TCFirstName.Width = 10;
TSAuthors.GridColumnStyles.Add(TCFirstName);
DataGridColumnStyle col2 =
new DataGridTextBoxColumn();
TCFirstName.MappingName = "Famille";
TCFirstName.HeaderText = "Famille";
TCFirstName.Width = 100;
TSAuthors.GridColumnStyles.Add(col2);
DataGridColumnStyle col3 =
new DataGridTextBoxColumn();
TCFirstName.MappingName = "Lib1";
TCFirstName.HeaderText = "Lib1";
TCFirstName.Width = 10;
TSAuthors.GridColumnStyles.Add(col3);
DataGridColumnStyle col4 =
new DataGridTextBoxColumn();
TCFirstName.MappingName = "Lib2";
TCFirstName.HeaderText = "Lib2";
TCFirstName.Width = 100;
TSAuthors.GridColumnStyles.Add(col4);
DataGridColumnStyle col5 =
new DataGridTextBoxColumn();
TCFirstName.MappingName = "Lib3";
TCFirstName.HeaderText = "Lib3";
TCFirstName.Width = 10;
TSAuthors.GridColumnStyles.Add(col5);
DataGridColumnStyle col6 =
new DataGridTextBoxColumn();
TCFirstName.MappingName = "Conteneur";
TCFirstName.HeaderText = "Conteneur";
TCFirstName.Width = 100;
TSAuthors.GridColumnStyles.Add(col6);
DataGridColumnStyle col7 =
new DataGridTextBoxColumn();
TCFirstName.MappingName = "Etat";
TCFirstName.HeaderText = "Etat";
TCFirstName.Width = 10;
TSAuthors.GridColumnStyles.Add(col7);
DataGridColumnStyle col8 =
new DataGridTextBoxColumn();
TCFirstName.MappingName = "Creation";
TCFirstName.HeaderText = "Creation";
TCFirstName.Width = 100;
TSAuthors.GridColumnStyles.Add(col8);
DataGridColumnStyle col9 =
new DataGridTextBoxColumn();
TCFirstName.MappingName = "Destruction";
TCFirstName.HeaderText = "Destruction";
TCFirstName.Width = 10;
TSAuthors.GridColumnStyles.Add(col9);
DataGridColumnStyle col10 =
new DataGridTextBoxColumn();
TCFirstName.MappingName = "Emplacement";
TCFirstName.HeaderText = "Emplacement";
TCFirstName.Width = 100;
TSAuthors.GridColumnStyles.Add(col10);

//5.Add the DataGridTableStyle object to the collection returned by TableStyles property. dataGrid1.TableStyles.Add(TSAuthors);

et ca fait ... rien !!!
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
donc vire tout ceux qui ne marche pas et remplace par ca :

//avant ca affecte ton dataset a ton datagrid :
datagrid1.datasource = dt2 ;

DataGridTableStyle DgTableStyle = new DataGridTableStyle (
true);


DgTableStyle.MappingName = "ds" ;


//Ne pas oublier de ratacher le tablestyle a ton datagrid ..(chose qu'a priori tu n'avais pas fait)
datagrid1.TableStyles.Add(DgTableStyle);

//puis :

datagrid1.TableStyles["ds"].GridColumnStyles["id_boite
"].HeaderText = "NumBoite";


datagrid1.TableStyles["ds"].GridColumnStyles["id_boite
"].Width = 10;

//etc....


Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
6
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
18 février 2005

Merci pour vos réponses,

J'ai été aidé par quelqu'un et maintenant ça marche.
Je signale la raison du problème pour archive, je n'affectait pas correctement mon mapping name au bon nom de ma source de donnée (mon datatable)

la mauvais méthode(que j'utilisais):
DataTable dt = new DataTable("ds");
DgTableStyle.MappingName = "ds" ;

la bonne méthode:
DataTable dt = new DataTable("ce qu on veut");
DgTableStyle.MappingName = dt.TableName ;

Puis pour chaque colonne mettre le maping name au nom de la colonne dans la requete

A+
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
ben c'est ce que je t'avais mis...il me semble....
mais bon tant mieux...


Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."