Ajout d'une colonne hyperlien dans DataTable?

cs_Zekez Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 26 septembre 2006 - 9 avril 2005 à 18:30
cs_Zekez Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 26 septembre 2006 - 9 avril 2005 à 23:52
Bonjour,

Voilà mon problème, j'ai une colonne hyperlien que je dois insérer dans une DataTable mais... le compilateur hurle:

DataTable MaTable= new DataTable();
HyperLinkColumn hlc= new HyperLinkColumn();
hlc.HeaderText= "Action";
hlc.Text= "Commander";
MaTable.Columns.Add(hlc); // Et c'est sur ça que ça ne marche pas...
GrilleProduits.DataSource= MaTable;

Voilà, le compilateur me dit qu'il ne sait pas convertir une HyperLinkColumn en DataColumn et je le comprend bien mais je ne sais pas vraiment comment je pourrais m'arranger pour que ça passe...

Le résultat doit se trouver dans un DataGrid après mais je pense qu'il n'y aura pas de problèmes si je fais: MonDataGrid.DataSource= MaTable;

J'espère que quelqu'un saura me dépanner un peu, merci.

10 réponses

cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 99
9 avril 2005 à 18:58
Salut,

Une instance d'HyperLinkColumn s'ajoute au contrôle DataGrid, pas à la DataTable.
Colonnes DataGrid

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_Zekez Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 26 septembre 2006
9 avril 2005 à 20:17
D'accord, merci! Seulement je vois qu'il m'ajoute la colonne hyperlien non pas en dernière colonne mais en 1ere colonne de mon datagrid où que je l'ajoute dans le code... comment puis-je faire pour inverser l'ordre des colonnes sachant que je n'utilise pas le mode design?
0
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 99
9 avril 2005 à 21:16
Si tu te sert de la méthode Add, la colonne est ajoutée à la fin.
Donc si la tienne se retrouve au début c'est que tu l'ajoute avant les autres.

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_Zekez Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 26 septembre 2006
9 avril 2005 à 21:31
Ha... ben alors je ne vois pas pourquoi elle ne s'ajoute pas à la fin ma colonne, pourtant je met bien mon Add sur la fin...
Voilà mon code:

string connStr= "Provider= Microsoft.Jet.OLEDB.4.0; Data Source=" + MapPath("./InfonLine.mdb");
string selStr= "SELECT LibelleProduit AS Libellé FROM Produit ORDER BY LibelleProduit";
OleDbDataAdapter oDA;
DataSet oDS;
if(Page.IsPostBack == false)
{
oDA= new OleDbDataAdapter(selStr, connStr);
oDS= new DataSet();
oDA.Fill(oDS, "Acceuil");

// Création de la colonne hyperlien
HyperLinkColumn hlc= new HyperLinkColumn();
hlc.HeaderText= "Action";
hlc.Text= "Commander";

GrilleProduits.DataSource= oDS.Tables["Acceuil"];
GrilleProduits.Columns.Add(hlc);
GrilleProduits.DataBind();
}

Peut-être qu'il ne considère pas la colonne ajoutée via le DataSet comme une colonne à prendre en compte pour le Add... ça me laisse encore plus dans le flou en fait...
Je sais que j'ai la propriété du DataGrid "AutoGenerateColumns" à True par défaut mais si je supprime ça, il ne m'affiche plus les données du DataSet... hmmm et ça a p'tet rien à avoir aussi...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 99
9 avril 2005 à 22:01
essaie plutôt :
GrilleProduits.DataSource= oDS.Tables["Acceuil"];
GrilleProduits.DataBind();
GrilleProduits.Columns.Add(hlc);

au lieu de :
GrilleProduits.DataSource= oDS.Tables["Acceuil"];
GrilleProduits.Columns.Add(hlc);
GrilleProduits.DataBind();

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_Zekez Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 26 septembre 2006
9 avril 2005 à 22:09
Rien n'à y faire, ainsi, il ne m'affiche pas le colonne hyperlien et si je place un deuxième DataBind juste après le Add... il me place tjs la colonne hyperlien en 1er lieu ...
0
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 99
9 avril 2005 à 22:12
De toute façon l'explication est donnée dans la doc de la propriété AutoGenerateColumns :
"Remarque
Des colonnes déclarées explicitement peuvent être utilisées en conjonction avec des colonnes générées automatiquement. Lorsque vous utilisez les deux, les colonnes déclarées explicitement sont rendues en premier, suivies des colonnes générées automatiquement. Les colonnes générées automatiquement ne sont pas ajoutées à la collection Columns."

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_Zekez Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 26 septembre 2006
9 avril 2005 à 22:22
D'accord, merci beaucoup pour les aides en tout cas, je vais essayer de faire autre chose!
0
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 99
9 avril 2005 à 23:21
Ba le plus simple (à mon avis) est de désactiver la génération auto et de générer et d'ajouter toi même les colonnes qui l'étaient automatiquement puis d'ajouter ta colonne supplémentaire.

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_Zekez Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 26 septembre 2006
9 avril 2005 à 23:52
Oui c'est ce que je pensais faire, j'espère que ça ne me posera pas trop de difficultés.
Merci.
0