Datagrid : Numeroter les lignes

Signaler
Messages postés
30
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
28 septembre 2005
-
Messages postés
12
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
30 octobre 2007
-
Encore un souci avec un data grid.
Je remplis mon datagrid grâce à ma BDD avec une requête (classant des compagnies suivant une note) qui se termine par un ORDER BY note_compagnie

Mon client aimerait que la première colonne du datagrid soit le classement : 1e, 2e, .... etc
J'ai donc bien sur créer cette colonne dans mon code ASP, mais il me reste à la remplir, ...






Est-ce que quelqu'un à une idée sur la facon de proceder ?

9 réponses

Messages postés
100
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
27 janvier 2006
1
Salut,



au niveau de ta datagrid dans ta page aspx, tu mets un petit:



OnItemDataBound="ItemsGrid_ItemDataBound"



ensuite dans ton code behind, tu mets:



public void ItemsGrid_ItemDataBound(object sender, DataGridItemEventArgs e)

{

if (e.Item.DataItem != null)

{


Label l = (Label)e.Item.Cells[0].FindControl("lblClassement
");

l.Text=(e.Item.DataSetIndex+1);

}

}





C'est tout...





Cab
Messages postés
30
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
28 septembre 2005

Bon alors, j'ai du passé en code VB car tu me l'as donné en C, mais j'ai un truc qui marche pas


Public
Sub ItemsGrid_ItemDataBound (
ByVal sender
As
Object,
ByVal e
As System.Web.UI.WebControls.DataGridItemEventArgs)

If (e.Item.DataItem
Is DBNull.Value)
Then
'rien
Else
Dim l
As Label
l =
CType(e.Item.Cells(0).FindControl("lblClassement"), Label)
l.Text = (e.Item.DataSetIndex + 1)

End
If
End
Sub

La ligne en rouge ne passe pas, ... tu sais comment la modifer ?

Ensuite pour l'ASPX:
J'ai bien mis :

Mais pour ma colonne, je mets quoi ???
?
Messages postés
100
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
27 janvier 2006
1
ta colonne, tu n'y touche pas... tu peux la laisser en TemplateColumn



J'avais juste oublié de convertir le DataSetIndex en string:



l.Text=Convert.ToString(e.Item.DataSetIndex+1);



Cab
Messages postés
30
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
28 septembre 2005

Bon, ca ne marche toujours pas. Je vois l'erreur, mais pareil, je ne sais pas la corriger, ...
Voici mon code :

Public Sub ItemsGrid_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)


If (e.Item.DataItem Is DBNull.Value)
Then
'rien


Else
Dim L As Label
Dim S As
String

L = CType(e.Item.Cells(1).FindControl("lblClassement"), Label)
S = CType(e.Item.DataSetIndex + 1, String)
L.Text = S
End
If
End Sub

J'ai lancé le débugger pour voir ce qu'il y avait :
e.Item.DataSetIndex = -1
S = "0"
L = Nothing

Donc apparemment pour S ma conversion du DataSetIndex en String fonctionne. Mais ca viendrai plutot de la première ligne, vu qu'il n'y à rien dans L, ...

Sais-tu d'ou cela provient ?

Pourtant j'ai bien dans l'ASP :
Messages postés
100
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
27 janvier 2006
1
et comme ça ?



CType(e.Item.Cells[0].FindControl("lblClassement"), Label)



ça marchait pas ???



Cab
Messages postés
30
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
28 septembre 2005

Non, même souci:


L =
CType(e.Item.Cells(0).FindControl("lblClassement"), Label)
Ca me donne nothing dans L ....
Messages postés
100
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
27 janvier 2006
1
Je peux pas trop t'aider en fait, vu que je développe en C# et que ton probleme



est un probleme de vb.net...
Messages postés
30
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
28 septembre 2005

En cherchant avec le debugger j'ai finalement vu ce qui n'allait pas c'etait tt con : c'est NOTHING et pas dbnull.value.
Et avec ce code mm pas besoin d'associer la fonction dans la page ASPX.



Private
Sub DataGrid1_ItemDataBound(
ByVal sender
As
Object,
ByVal e
As System.Web.UI.WebControls.DataGridItemEventArgs)
Handles DataGrid1.ItemDataBound

If (e.Item.DataItem
Is
Nothing)
Then
'rien
Else
Dim L
As Label

Dim S
As
String
L =
CType(e.Item.Cells(0).FindControl("lblClassement"), Label)
S =
CType(e.Item.DataSetIndex + 1,
String)
L.Text = S

End
If
End
Sub
Messages postés
12
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
30 octobre 2007

salut
j'ai un probleme avec datagrid sous asp.net 2005
j'ai besoin d'ajouter des valeur apartir de datagrid et les valeur est dénamique
merci d'avance