Datagrid : Numeroter les lignes

Templar_net Messages postés 30 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 28 septembre 2005 - 19 juil. 2005 à 12:53
n_youbi Messages postés 12 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 30 octobre 2007 - 10 juin 2007 à 23:07
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

cabbry Messages postés 100 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 27 janvier 2006 1
19 juil. 2005 à 13:45
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
0
Templar_net Messages postés 30 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 28 septembre 2005
19 juil. 2005 à 18:07
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 ???
?
0
cabbry Messages postés 100 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 27 janvier 2006 1
20 juil. 2005 à 08:41
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
0
Templar_net Messages postés 30 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 28 septembre 2005
20 juil. 2005 à 10:16
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 :
0

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

Posez votre question
cabbry Messages postés 100 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 27 janvier 2006 1
20 juil. 2005 à 10:21
et comme ça ?



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



ça marchait pas ???



Cab
0
Templar_net Messages postés 30 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 28 septembre 2005
20 juil. 2005 à 10:33
Non, même souci:


L =
CType(e.Item.Cells(0).FindControl("lblClassement"), Label)
Ca me donne nothing dans L ....
0
cabbry Messages postés 100 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 27 janvier 2006 1
20 juil. 2005 à 10:39
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...
0
Templar_net Messages postés 30 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 28 septembre 2005
21 juil. 2005 à 18:03
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
0
n_youbi Messages postés 12 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 30 octobre 2007
10 juin 2007 à 23:07
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
0
Rejoignez-nous