Problème de pagination avec le Datagrid

Signaler
Messages postés
15
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
1 août 2007
-
Messages postés
15
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
1 août 2007
-
Bonjour à tous,


J'ai un soucis avec un datagrid.
Je formate un datagrid à la main, ensuite de fait un lien avec ma base de données. Je met la propriété "AutoGenerateColumns" à false pour éviter d'avoir en double mes données.


Le soucis est que lorsque je met "AutoGenerateColumns" à false et que je change de page, je n'accede meme pas à ma méthode "PageIndexChanged"
alors que lorsque je met "AutoGenerateColumns" à true, tout fonctionne, mais mes données sont doublés (logique)


Merci de l'aide que vous m'apporterais.

-------------
Amicalement,

Christophe.

7 réponses

Messages postés
15
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
1 août 2007
1
Je recherche toujours une solution.

Merci d'avance

-------------
Amicalement,

Christophe.
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
1
salut,
est-ce que tu fais une pagination custom ou utilistes-tu celle par défaut ?
pourrais-tu poster ton code...

yopyop
Messages postés
15
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
1 août 2007
1
Je n'utilise pas le custom,


je met simplement le AllowPaging = true.


j'ai déjà fait le test avec le custom à true, mais ca n'a rien changer.
Je ne comprend plus, c'est trop bizarre

-------------
Amicalement,

Christophe.
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
1
re,

pourrais-tu poster ton code... ce sear plus simple.

yopyop
Messages postés
15
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
1 août 2007
1
//Alimentation du Datagrid
******************************************************************
    DataGridResults.DataSource = dsDonnees;
    DataGridResults.DataBind();
******************************************************************

//Mise en forme de mon datagrid car j'ai des décimals qui sont sur x 0 après la virgule.
******************************************************************
private void miseEnFormeDataGridResults(DataSet dsDonnees)
  {
   BoundColumn bdColonne;
   //Mise en forme des colonnes du tableau
   for(int col=0;col<dsDonnees.Tables[0].Columns.Count;col++)
   {
    bdColonne = new BoundColumn();
    bdColonne.HeaderText = dsDonnees.Tables[0].Columns[col].ColumnName;
    
    switch(dsDonnees.Tables[0].Columns[col].DataType.Name)
    {
     case "String":
      bdColonne.DataFormatString="{0:C}";
      break;
     case "Decimal":
      bdColonne.DataFormatString="{0:F2}";
      break;
     case "Int32":
      bdColonne.DataFormatString="{0:G}";
      break;
    }
    bdColonne.DataField = dsDonnees.Tables[0].Columns[col].ColumnName;
    DataGridResults.Columns.Add(bdColonne);
   }
  }
******************************************************************

//Changement de page
******************************************************************
private void DataGridResults_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
  {
   DataGridResults.CurrentPageIndex = e.NewPageIndex;
   DataGridResults.DataSource = dsresult;
   DataGridResults.DataBind();
  }
******************************************************************

-------------
Amicalement,

Christophe.
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
1
a quel moment appelles-tu miseEnFormeDataGridResults..?
.
d'apès ton code (apparemment il n'y a pas tout), tu fais un bind du dataset et ensuite tu ajoutes les colonnes manuellement...?
a quoi sert le bind dans ce cas (tu n'appelles pas ta miseEnForme... dans PageIndexChanged ?)?

je te suggère de passer par l'événement onItemDatabound pour formatter tes données.
Pour les colonnes a double, tu peux utiliser l'itemtemplate pour les cacher.

yopyop
Messages postés
15
Date d'inscription
dimanche 16 juillet 2006
Statut
Membre
Dernière intervention
1 août 2007
1
Je fait d'abord mon "miseEnFormeDataGridResults" et ensuite je fait mon bind.

j'ai mis "DataGridResults_PageIndexChanged" pour montrer ce que j'avais mis dans le changement de page.

Je procede comme cela car j'ai des décimals à 2 chiffres apres la virgule dans ma base et si je fait pas de mise en forme à la main, il me met X 0 après la virgule.

-------------
Amicalement,

Christophe.