OVH Cloud OVH Cloud

Problèmes de pagination

3 réponses
Avatar
Franck Diastein
Bonjour,

Je suis capable d'activer la pagination dans un DataGrid, mais j'ai un
problème:

//************************** Code
private void dgMyDataGrid_ItemCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e) {

int _ID = -1;
_ID = int.Parse(dgMyDataGrid.DataKeys[e.Item.ItemIndex].ToString());

// My DB stuff using _ID

}
//************************** Code

J'ai l'erreur suivante lorsque j'essai de charger la deuxième page du
DataGrid...

Index was out of range. Must be non-negative and less than the size of
the collection. Parameter name: index

Celle-ci est la 'mauvaise' ligne de code:

_ID = int.Parse(dgMyDataGrid.DataKeys[e.Item.ItemIndex].ToString());

Une idée ?

Merci d'avance...

3 réponses

Avatar
Cyril S.
Si tu veux faire marcher la pagination tu t'y prends mal.

Etapes :

1/ Activer la pagination de la DataGrid, propriété AllowPaging="true"

2/ Ajouter un EventHandler au niveau de l'évènement de changement de page,
l'évènement en question est : PageIndexChanged

3/ Mettre le code suivant dans l'EventHandler
private void DataGrid1_PageIndexChanged(object source,
System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex = e.NewPageIndex;
// Recharger la DataGrid
}


Dans le code que tu as founit il te faut faire attention à l'utilisation de
l'évènement ItemCommand, en effet il faut toujours tester le type d'item qui
a provoqué l'évènement. Dans ton cas c'était un item de type ListItem.Pager
et ce type d'item a la propriété ItemIndex à -1, et donc l'appel à la méthode
dgMyDataGrid.DataKeys[e.Item.ItemIndex] plante car -1 n'est pas un index
valide (je sais pas si j'ai été très clair :/ )

exemple pour teste si l'item est de type Item :
if (e.Item.ItemType = ListItemType.Item || e.Item.ItemType =
ListItemType.AlternatingItem )


"Franck Diastein" wrote:

Bonjour,

Je suis capable d'activer la pagination dans un DataGrid, mais j'ai un
problème:

//************************** Code
private void dgMyDataGrid_ItemCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e) {

int _ID = -1;
_ID = int.Parse(dgMyDataGrid.DataKeys[e.Item.ItemIndex].ToString());

// My DB stuff using _ID

}
//************************** Code

J'ai l'erreur suivante lorsque j'essai de charger la deuxième page du
DataGrid...

Index was out of range. Must be non-negative and less than the size of
the collection. Parameter name: index

Celle-ci est la 'mauvaise' ligne de code:

_ID = int.Parse(dgMyDataGrid.DataKeys[e.Item.ItemIndex].ToString());

Une idée ?

Merci d'avance...



Avatar
Franck Diastein
OK, c'est compris...

Merci beaucoup !!!

Sais-tu oú je peux trouver de l'info approfondie sur la DataGrid ? Un
site ou un bouquin...

J'aimerais vraiment maîtriser ce WebControl, car je compte l'utiliser
beaucoup :-)

Cyril S. wrote:
Si tu veux faire marcher la pagination tu t'y prends mal.

Etapes :

1/ Activer la pagination de la DataGrid, propriété AllowPaging="true"

2/ Ajouter un EventHandler au niveau de l'évènement de changement de page,
l'évènement en question est : PageIndexChanged

3/ Mettre le code suivant dans l'EventHandler
private void DataGrid1_PageIndexChanged(object source,
System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex = e.NewPageIndex;
// Recharger la DataGrid
}


Dans le code que tu as founit il te faut faire attention à l'utilisation de
l'évènement ItemCommand, en effet il faut toujours tester le type d'item qui
a provoqué l'évènement. Dans ton cas c'était un item de type ListItem.Pager
et ce type d'item a la propriété ItemIndex à -1, et donc l'appel à la méthode
dgMyDataGrid.DataKeys[e.Item.ItemIndex] plante car -1 n'est pas un index
valide (je sais pas si j'ai été très clair :/ )

exemple pour teste si l'item est de type Item :
if (e.Item.ItemType = ListItemType.Item || e.Item.ItemType =
ListItemType.AlternatingItem )


"Franck Diastein" wrote:


Bonjour,

Je suis capable d'activer la pagination dans un DataGrid, mais j'ai un
problème:

//************************** Code
private void dgMyDataGrid_ItemCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e) {

int _ID = -1;
_ID = int.Parse(dgMyDataGrid.DataKeys[e.Item.ItemIndex].ToString());

// My DB stuff using _ID

}
//************************** Code

J'ai l'erreur suivante lorsque j'essai de charger la deuxième page du
DataGrid...

Index was out of range. Must be non-negative and less than the size of
the collection. Parameter name: index

Celle-ci est la 'mauvaise' ligne de code:

_ID = int.Parse(dgMyDataGrid.DataKeys[e.Item.ItemIndex].ToString());

Une idée ?

Merci d'avance...





Avatar
Cyril S.
Généralité :
http://www.developer.com/net/vb/article.php/10926_3320941_1

Le DataBinding :
http://openmymind.net/databinding/index.html

Les méandres du DataBinding
http://odetocode.com/Articles/278.aspx

Qlq info sur les DataList :
http://www.wwwcoder.com/main/parentid/254/site/3890/68/default.aspx


"Franck Diastein" wrote:

OK, c'est compris...

Merci beaucoup !!!

Sais-tu oú je peux trouver de l'info approfondie sur la DataGrid ? Un
site ou un bouquin...

J'aimerais vraiment maîtriser ce WebControl, car je compte l'utiliser
beaucoup :-)

Cyril S. wrote:
> Si tu veux faire marcher la pagination tu t'y prends mal.
>
> Etapes :
>
> 1/ Activer la pagination de la DataGrid, propriété AllowPaging="true"
>
> 2/ Ajouter un EventHandler au niveau de l'évènement de changement de page,
> l'évènement en question est : PageIndexChanged
>
> 3/ Mettre le code suivant dans l'EventHandler
> private void DataGrid1_PageIndexChanged(object source,
> System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
> {
> DataGrid1.CurrentPageIndex = e.NewPageIndex;
> // Recharger la DataGrid
> }
>
>
> Dans le code que tu as founit il te faut faire attention à l'utilisation de
> l'évènement ItemCommand, en effet il faut toujours tester le type d'item qui
> a provoqué l'évènement. Dans ton cas c'était un item de type ListItem.Pager
> et ce type d'item a la propriété ItemIndex à -1, et donc l'appel à la méthode
> dgMyDataGrid.DataKeys[e.Item.ItemIndex] plante car -1 n'est pas un index
> valide (je sais pas si j'ai été très clair :/ )
>
> exemple pour teste si l'item est de type Item :
> if (e.Item.ItemType = ListItemType.Item || e.Item.ItemType =
> ListItemType.AlternatingItem )
>
>
> "Franck Diastein" wrote:
>
>
>>Bonjour,
>>
>>Je suis capable d'activer la pagination dans un DataGrid, mais j'ai un
>>problème:
>>
>>//************************** Code
>>private void dgMyDataGrid_ItemCommand(object source,
>>System.Web.UI.WebControls.DataGridCommandEventArgs e) {
>>
>>int _ID = -1;
>>_ID = int.Parse(dgMyDataGrid.DataKeys[e.Item.ItemIndex].ToString());
>>
>>// My DB stuff using _ID
>>
>>}
>>//************************** Code
>>
>>J'ai l'erreur suivante lorsque j'essai de charger la deuxième page du
>>DataGrid...
>>
>>Index was out of range. Must be non-negative and less than the size of
>>the collection. Parameter name: index
>>
>>Celle-ci est la 'mauvaise' ligne de code:
>>
>>_ID = int.Parse(dgMyDataGrid.DataKeys[e.Item.ItemIndex].ToString());
>>
>>Une idée ?
>>
>>Merci d'avance...
>>