OVH Cloud OVH Cloud

Besoin d'une petite aide sur la récupération d'une valeur d'un Datagrid.

2 réponses
Avatar
Fabrice
Bonjour à tous


Après maintes recherches, je sêche toujours.
Je possède un Datagrid avec avec un ItemTemplate Contenant un Control
HyperLink.
Je voudrais fixer les propriétés de ce dernier en Code Behind avec
l'évènement OnItemCreated du Datagrid.

J'arrive à fixer différentes propriétés comme le Texte.

Voici le Code :


Sur le DataGrid (fichier .aspx) : OnItemCreated="myDatagrid_ItemCreated"


Dans le fichier .vb

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

If e.Item.ItemType = ListItemType.Item Then


CType(e.Item.FindControl("lnkControl"), HyperLink).Text="#1"

End If

Pas de soucis.
Le problème survient si je veux mettre la propriété

CType(e.Item.FindControl("lnkFamBreDetail"),
HyperLink).NavigateUrl="mapage.aspx?" & ValeurColonne

Je n'arrive pas à savoir comment récupérer la valeur de la ligne/colonne en
cours. C'est à dire construire le lien dynamiquement en récupérant la valeur
de la collone liée.
Mon la liaison de données j'utilise simplement un dataview issu d'un
dataset.

J'ai essayé ceci mais je n'obtiens rien !

If e.Item.ItemType = ListItemType.Item Then

Dim drvTemp As System.Data.DataRowView
drvTemp = CType(e.Item.DataItem, System.Data.DataRowView)
CType(e.Item.FindControl("lnkControl"),
Hyperlink).CommandArgument = CType(drvTemp.Row.Item("Column"),
System.String)

end if


Je suis perdu..

merci de votre aide
fabrice

2 réponses

Avatar
Norm
> If e.Item.ItemType = ListItemType.Item Then


Premièrement
If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType =
ListItemType.AlternatingItem Then
serait plus approprié car sinon ton if ne sera exécuté qu'une fois sur deux



Dim drvTemp As System.Data.DataRowView
drvTemp = CType(e.Item.DataItem, System.Data.DataRowView)
CType(e.Item.FindControl("lnkControl"),
Hyperlink).CommandArgument = CType(drvTemp.Row.Item("Column"),
System.String)



as-tu essayer
e.Item.DataItem("nomdetacolonne")
au lieu de tout ce processus de cast que tu fais.
Avatar
Fabrice
finalement j'ai basculer sur l'evenement onietmdatabound.
la ca roule.

merci
fabrice
"Fabrice" a écrit dans le message de news:

Bonjour à tous


Après maintes recherches, je sêche toujours.
Je possède un Datagrid avec avec un ItemTemplate Contenant un Control
HyperLink.
Je voudrais fixer les propriétés de ce dernier en Code Behind avec
l'évènement OnItemCreated du Datagrid.

J'arrive à fixer différentes propriétés comme le Texte.

Voici le Code :


Sur le DataGrid (fichier .aspx) : OnItemCreated="myDatagrid_ItemCreated"


Dans le fichier .vb

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

If e.Item.ItemType = ListItemType.Item Then


CType(e.Item.FindControl("lnkControl"), HyperLink).Text="#1"

End If

Pas de soucis.
Le problème survient si je veux mettre la propriété

CType(e.Item.FindControl("lnkFamBreDetail"),
HyperLink).NavigateUrl="mapage.aspx?" & ValeurColonne

Je n'arrive pas à savoir comment récupérer la valeur de la ligne/colonne
en cours. C'est à dire construire le lien dynamiquement en récupérant la
valeur de la collone liée.
Mon la liaison de données j'utilise simplement un dataview issu d'un
dataset.

J'ai essayé ceci mais je n'obtiens rien !

If e.Item.ItemType = ListItemType.Item Then

Dim drvTemp As System.Data.DataRowView
drvTemp = CType(e.Item.DataItem, System.Data.DataRowView)
CType(e.Item.FindControl("lnkControl"),
Hyperlink).CommandArgument = CType(drvTemp.Row.Item("Column"),
System.String)

end if


Je suis perdu..

merci de votre aide
fabrice