Comment accéder aux champs d 'un datagrid

Résolu
mhassine Messages postés 12 Date d'inscription vendredi 26 décembre 2003 Statut Membre Dernière intervention 2 septembre 2005 - 17 août 2005 à 14:09
benjiiim94 Messages postés 96 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 13 juillet 2007 - 18 août 2005 à 17:00
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

mhassine Messages postés 12 Date d'inscription vendredi 26 décembre 2003 Statut Membre Dernière intervention 2 septembre 2005
18 août 2005 à 16:54
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.
3
benjiiim94 Messages postés 96 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 13 juillet 2007
18 août 2005 à 09:41
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
0
benjiiim94 Messages postés 96 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 13 juillet 2007
18 août 2005 à 09:42
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.
0
mhassine Messages postés 12 Date d'inscription vendredi 26 décembre 2003 Statut Membre Dernière intervention 2 septembre 2005
18 août 2005 à 11:41
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.
0

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

Posez votre question
benjiiim94 Messages postés 96 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 13 juillet 2007
18 août 2005 à 12:31
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>
0
benjiiim94 Messages postés 96 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 13 juillet 2007
18 août 2005 à 17:00
Et bein comme ca, j'aurais aussi appris quelque chose ! Merci ;-)
0
Rejoignez-nous