Comment accéder aux champs d 'un datagrid

Résolu
Signaler
Messages postés
12
Date d'inscription
vendredi 26 décembre 2003
Statut
Membre
Dernière intervention
2 septembre 2005
-
Messages postés
96
Date d'inscription
vendredi 17 décembre 2004
Statut
Membre
Dernière intervention
13 juillet 2007
-
bonjour,

j'ai une feuille dans laquelle se trouve un datagrid qui contient des articles d'un catalogue.
Je voudrais que dès que je clique sur le bouton modifier d'une ligne du datagrid, les champs de données soient extraits du datagrid et mis dans des textbox et des label, afin d'afficher plus d'informations sur l 'article.
Je n'ai pas trouvé la syntaxe pour accéder à une certaine cellule de la ligne courante d'un datagrid ?
La connaissez vous?
Merci d'avance.

6 réponses

Messages postés
12
Date d'inscription
vendredi 26 décembre 2003
Statut
Membre
Dernière intervention
2 septembre 2005

Si! on peut accéder à des cellules. Avec beaucoup de patience et de tatonnement, j'ai enfin réussi à y accéder d'une facon très simple:



Private
Sub DataGrid1_ItemCommand1(
ByVal source
As
Object,
ByVal e
As System.Web.UI.WebControls.DataGridCommandEventArgs)
Handles DataGrid1.ItemCommand



Dim str
As
String

'On positionne d'abord le "curseur"


DataGrid1.DataKeyField = e.Item.ItemIndex

'on accède aux cellules


Str = e.Item.Cells(0).Text

et voila .

Je te remercie quand même énormément pour tes longues réponses , qui ont du te donner beaucoup de mal et de temps.
Messages postés
96
Date d'inscription
vendredi 17 décembre 2004
Statut
Membre
Dernière intervention
13 juillet 2007

Salut,



Lorsque tu cliques sur le bouton modifier, on est dacord que tu déclenches l'évenement ItemCommand de ton datagrid.

Dans cet événement, tu peus récupérer tous les controles que tu
souhaites gràce aux paramètres passés par default à l'événement (plus
particulièrement le "e")

Tu dois donc utiliser cette syntaxe : e.Item.FindControl("xxxxx") avec xxxxx le nom de ton controle.

Mais avant de te servir de ce controle, tu dois d'abord le caster pour pouvoir utiliser ces propriétés spécifiques :

Par exemple, en C#, si ton controle est une TextBox dans ton datagrid :
((TextBox)e.Item.FindControl("xxxxxx")), tu peus ainsi utiliser la
propriété Text par exemple
Messages postés
96
Date d'inscription
vendredi 17 décembre 2004
Statut
Membre
Dernière intervention
13 juillet 2007

Petite précision, tu peus avec cette méthode accéder à des controles,
pas à proprement dis à des cellules, si tu veus récupérer le contenu
d'une cellule, il doit donc y avoir un controle dedans (un label par
exemple), pour cela, tu dois concevoir ton datagrid en mode template.
Messages postés
12
Date d'inscription
vendredi 26 décembre 2003
Statut
Membre
Dernière intervention
2 septembre 2005

Salut,

merci de me répondre .
La syntaxe e.Item.FindControl("xxxxx") ne fonctionne pas toute seule . Peux tu me la donner complète ?
Comment déclare t on un datagrid en mode template ?

Comment pourrait on créer un label dans un datagrid ? le nombre de lignes est défini par le nombre de lignes dans la table . si tu veux bien m 'expliquer un peu tout ca stp .
A bientot.
Messages postés
96
Date d'inscription
vendredi 17 décembre 2004
Statut
Membre
Dernière intervention
13 juillet 2007

Je t'ai di que tu dois caster le controle pour pouvoir utiliser ces propriétés, comme ceci en C# : ((TextBox)e.Item.FindControl("xxxxxx")), et comme ceci en VB : CType(e.Item.Findcontrol("txtcat"),textbox)



<FooterStyle ForeColor= "White" BackColor="Green"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="Green" BackColor="#DCEBD9"></SelectedItemStyle>

<HeaderStyle Font-Bold ="True" ForeColor= "White" BackColor="Green"></HeaderStyle>
<Columns>










</Columns>





Mais comme un repeater :


<FooterStyle ForeColor="Green" BackColor="White"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="Green" BackColor="#DCEBD9"></SelectedItemStyle>

<HeaderStyle Font-Bold ="True" ForeColor="White" BackColor="Green" HorizontalAlign="Center"></HeaderStyle>
<columns>


' ID="Label5">





' ID="Label6">





' ID="Label7">


<FooterTemplate>
Reste dû :
</FooterTemplate>



' ID="Label8">


<FooterTemplate>
<%# resteclient %>
</FooterTemplate>

</columns>
Messages postés
96
Date d'inscription
vendredi 17 décembre 2004
Statut
Membre
Dernière intervention
13 juillet 2007

Et bein comme ca, j'aurais aussi appris quelque chose ! Merci ;-)