Ajouter une colonne à un datagrid

Résolu
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007 - 7 août 2006 à 15:33
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007 - 9 août 2006 à 12:09
Voila j'ai déjà poster sur le site d'asp.fr qui m'on renvoyait ici, donc je repose ma question.


Voila j'aimerais rajouter une colonne à mon DataGrid qui a déjà été préalablement remplit par mon dataSet.

Est-ce possible et si oui comment fait-on ?


En fait, j'ai déjà réalisé ceci mais cela ne marche pas


private string[] CreateTabColor() {

    string[] Color = new string[] {"#FF0000","#00FF00","#0000FF","#FFFF00","#9900CC",etc...};

    return Color;

}


Puis après j'aurais aimé faire

for (int i = 0; i<=16;i++){

    MonDataGrid.Columns.Add(Color[i]);

}


Cela permet de mettre une couleur différentes dans la colonne que je viens de créer et pour chaque ligne de mon DataGrid.


Merci.d'avance ;-)

7 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
9 août 2006 à 11:48
Ben ici on parle pas de webForm, alors je sias pas trop comment je pourrais t'aider...
Si c'est comme en WinForm DataGridColumn est une classe Abstaite de base pour toute les colonnes, on ne peut donc pas l'instancier directement, il faut le faire via un type non-abstait comme par exemple DataGridTextBox (je dis ça de tête, je ne suis pas tout à fait sûr du nom de la classe). Ca donnerait donc quelque chose comme :

DataGridColumn dgc = new DataGridTextBox();

En plus, tu travailles avec le framework 1.1, et je dois t'avouer que depuis que je suis passé au 2, je n'ai plus touché au 1.1. Et le DataGrid(View) est justement un composant qui change relativement beaucoup d'une version à l'autre...

VC# forever
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
8 août 2006 à 19:29
Salut,
Voici un petit exemple rapidement fait avec VisualStudio 2005 & Framework 2 => DataGridView :

private
void AddColumn(
Color defColor,
params
Color[] colors)
{
  
// Add the column
   DataGridViewColumn col =
new
DataGridViewTextBoxColumn();
   col.Name =
"myCol";
   col.DefaultCellStyle.BackColor = defColor;
// Default backcolor
   this.dataGridView.Columns.Add(col)

   // Fill the rows...
   for(
int i=0; i<
this.dataGridView.Rows.Count; i++)
  {
      
if (i == colors.Length)
break;
// Default value
      this.dataGridView[
"myCol", i].Style.BackColor = colors[i];
  }
}

Appelle de la méthode :
this.AddColumn(
Color.Red,
Color.Blue,
Color.Violet);

Les deux premières cellules seront donc bleue respectivement violette, le reste des lignes, s'il y en a, sera dans la couleur par défaut, rouge.
VC# forever
0
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007
9 août 2006 à 10:47
Merci pour ta réponse mais j'utilise Viusal Studio Net 2002 donc
framework 1.1, je crois et donc je n'ai pas de DataGridView mais j'ai
essayé d'exporter ta solution mais je rencontre un petit problème.


Je fais

privatevoid AddColumn(
Color defColor,
paramsColor[] colors)
{
  
// Add the column
   DataGridColumn col = new DataGridColumn();
  

    //col.Name "myCol";> je n'ai pas cette propriété

 // col.DefaultCellStyle.BackColor = defColor;
// Default backcolor =>

  col.ItemStyle.BackColor =defColor;

  // this.dataGridView.Columns.Add(col) =>

 this.DataGridCom.Columns.Add(col);

   // Fill the rows...
  //  for(int i=0; i<this.dataGridView.Rows.Count; i++)

   
for(int i=0; i<this.DataGridCom.Items.Count; i++)
  {
      
if (i == colors.Length)
break;
// Default value
      //this.dataGridView["myCol", i].Style.BackColor = colors[i];

      // Je ne peux pas appeler ma colonne puisque je n'ai pas pu la nommer

  }
}


Appelle de la méthode :
this.AddColumn(
Color.Red,
Color.Blue,
Color.Violet);


Petite légende Orange => ton code

               
          Rouge => Ce qui est
infesable car cela n'existe pas sur ma version

               
    Noir => le code que j'ai remplacé pour l'adapter
avec ma version
0
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007
9 août 2006 à 11:00
A oui, j'ai oublié de t'indiquer que lorsque je compile ce petit bout de code, une erreur apparait :

"Impossible de créer une instance de la classe abstraite ou de l'interface 'System.Web.UI.WebControls.DataGridColumn'"
0

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

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
9 août 2006 à 11:07
Euh, mais tu es sur un projet web ou sur un projet winForm ??? Parce que ici c'est du C# en WinForm
Pour les questions web, il faut aller poster ta question sur ce forum.

VC# forever
0
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007
9 août 2006 à 11:36
En effet je suis sous WebForm, j'ai déjà exposé mon problème là bas mais ils m'ont dit de venir ici

Je pense que tu dois ajouter une colonne dans ta source de données. Renseigne toi sur http://www.csharpfr.com/

Tu devrais y trouver ton bonheur. Bon courage.

Je vais pas encore poster ma question là bas :-(
0
adressprov Messages postés 62 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 24 mars 2007
9 août 2006 à 12:09
Ok merci de tes conseils.
Je vais retourner sur le forum aspfr car DataGridTextBox() n'existe pas peut être qu'il s'en seront un peu plus.
0
Rejoignez-nous