OVH Cloud OVH Cloud

Tableaux, repeater et multiples actions

6 réponses
Avatar
Frederic Druilhet
Bonjour,
j'avoue galérer avec un repeater.
Je l'utilise pour dessiner un tableau, databindé avec une sélection
d'enregistrements.
Sur la droite de chaque ligne, je souhaiterai un bouton "supprimer" (je me
limite à un bouton pour l'instant, d'où le e.CommandName = "btnSuppr" dans
l'exemple)
si je clique sur mon bouton, je récupère bien l'"ItemIndex" associé au
repeaterItem ce qui me permet de savoir à partir de quelle ligne de mon
dataset il a été obtenu. Mais, je n'ai pas trouvé le moyen de cacher par un
contrôle quelconque l'ID de cet enregistrement dans la base de données. Je
suis alors obligé de requêter à nouveau le même dataset , puis de le
questionner pour obtenir l'info qui m'intéresse...
voir exemple ci dessous :


Sub rptResult_ItemCommand(ByVal source As System.Object, ByVal e As
System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles
rptResult.ItemCommand
If e.CommandName = "btnSuppr" Then
Dim d As DataSet = getD()
Response.Write("On a cliqué sur la ligne associée à " &
d.Tables("User").Rows(e.Item.ItemIndex).Item("nom") & "<BR>")
End If
End Sub

N'y a t'il pas plus simple ????
Vous faites comment ? vous contournez le problème en faisant à la place du
bouton un lien hypertexte simple du style
LaMemePage.aspx?action=suppression&ID=5142
???
Merci d'avance
Frédéric

6 réponses

Avatar
Laurent Jordi \(www.ezlogic.mc\)
Salut,

Je suis super mauvais dans ce domaine mais il me semble que ton contenu est
déconecté de la base. Donc si tu supprime l'élément de ton dataset et que tu
rbind tu ne requête pas a nouveau...

Par contre quand tu quittes la page, tu ne dois pas oublier de mettre a jour
la base...

Je te conseille d'attendre une confirmation d'un mutant dot net tueur de
troll... (Ils se reconnaitrons surement)

@++

LJ


"Frederic Druilhet" a écrit dans le message de
news:
Bonjour,
j'avoue galérer avec un repeater.
Je l'utilise pour dessiner un tableau, databindé avec une sélection
d'enregistrements.
Sur la droite de chaque ligne, je souhaiterai un bouton "supprimer" (je me
limite à un bouton pour l'instant, d'où le e.CommandName = "btnSuppr" dans
l'exemple)
si je clique sur mon bouton, je récupère bien l'"ItemIndex" associé au
repeaterItem ce qui me permet de savoir à partir de quelle ligne de mon
dataset il a été obtenu. Mais, je n'ai pas trouvé le moyen de cacher par


un
contrôle quelconque l'ID de cet enregistrement dans la base de données. Je
suis alors obligé de requêter à nouveau le même dataset , puis de le
questionner pour obtenir l'info qui m'intéresse...
voir exemple ci dessous :


Sub rptResult_ItemCommand(ByVal source As System.Object, ByVal e As
System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles
rptResult.ItemCommand
If e.CommandName = "btnSuppr" Then
Dim d As DataSet = getD()
Response.Write("On a cliqué sur la ligne associée à " &
d.Tables("User").Rows(e.Item.ItemIndex).Item("nom") & "<BR>")
End If
End Sub

N'y a t'il pas plus simple ????
Vous faites comment ? vous contournez le problème en faisant à la place du
bouton un lien hypertexte simple du style
LaMemePage.aspx?action=suppression&IDQ42
???
Merci d'avance
Frédéric




Avatar
Norm
crée toi une colonne
<asp:BoundColumn DataField="IdQuelconque" Visible="False"></asp:BoundColumn>

et dans le itemcommand ton id sera dans le champs suivant :
e.Item.Cells(0).Text

tu peux donc faire la suppression à cet endroit car tu as le id et à la fin
de refaire une requete pour remplir de nouveau ton tableau(enregistrement
supprimer en moins).








"Frederic Druilhet" a écrit dans le message de
news:
Bonjour,
j'avoue galérer avec un repeater.
Je l'utilise pour dessiner un tableau, databindé avec une sélection
d'enregistrements.
Sur la droite de chaque ligne, je souhaiterai un bouton "supprimer" (je me
limite à un bouton pour l'instant, d'où le e.CommandName = "btnSuppr" dans
l'exemple)
si je clique sur mon bouton, je récupère bien l'"ItemIndex" associé au
repeaterItem ce qui me permet de savoir à partir de quelle ligne de mon
dataset il a été obtenu. Mais, je n'ai pas trouvé le moyen de cacher par


un
contrôle quelconque l'ID de cet enregistrement dans la base de données. Je
suis alors obligé de requêter à nouveau le même dataset , puis de le
questionner pour obtenir l'info qui m'intéresse...
voir exemple ci dessous :


Sub rptResult_ItemCommand(ByVal source As System.Object, ByVal e As
System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles
rptResult.ItemCommand
If e.CommandName = "btnSuppr" Then
Dim d As DataSet = getD()
Response.Write("On a cliqué sur la ligne associée à " &
d.Tables("User").Rows(e.Item.ItemIndex).Item("nom") & "<BR>")
End If
End Sub

N'y a t'il pas plus simple ????
Vous faites comment ? vous contournez le problème en faisant à la place du
bouton un lien hypertexte simple du style
LaMemePage.aspx?action=suppression&IDQ42
???
Merci d'avance
Frédéric




Avatar
Frederic Druilhet
Merci, je vais l'essayer. Je vous tiens au courant ;-)
a+
Fred

"Norm" a écrit dans le message de
news:
crée toi une colonne
<asp:BoundColumn DataField="IdQuelconque"


Visible="False"></asp:BoundColumn>

et dans le itemcommand ton id sera dans le champs suivant :
e.Item.Cells(0).Text

tu peux donc faire la suppression à cet endroit car tu as le id et à la


fin
de refaire une requete pour remplir de nouveau ton tableau(enregistrement
supprimer en moins).


Avatar
Frederic Druilhet
Bon, j'ai trouvé encore plus simple. Une possibilité que j'avais déjà
essayée mais qui me renvoyait une erreur quoi que je fasse.
En fait, elle marche, mais, il faut metre des quotes plutot que des
guillements.
Tout se passe dans le bouton. Au commandname, on peut associer un
commandargument. mais, il faut databinder avec des simples quotes comme ceci
:

<asp:Button CommandName="btnSuppr" ID="btnSupprAlt" Runat="server"
Text="Supprimer" CommandArgument='<%#
databinder.eval(Container.DataItem,"ID") %>'></asp:Button>

ainsi, je recup l'ID de ma base de données très facilement pour traitement
ultérieur :

If e.CommandName = "btnSuppr" Then
Response.Write("Vous voulez supprimer l'ID : " & CStr(e.CommandArgument)
& "<BR>")
End If

Merci à ceux qui ont répondu !!!

Fred


"Frederic Druilhet" a écrit dans le message de
news:
Merci, je vais l'essayer. Je vous tiens au courant ;-)
a+
Fred


Avatar
Al1
Bonjour

Pourrais tu m'envoyer la page de code complète (html et script) avec le
repeater, le bouton supprimer et le sub qui permet de reccupérer l'ID que je
puisse avoir une vue globale

J'ai essayé de "bricoler les elements de ton echange de message sans succés.
Notemment je ne sais pas comment le bouton supprimer appelle le sub
rptResult_ItemCommand.
Ca fait maintenant quelques jours que je tourne autour et je fatigue

Merci d'avance
Alain

"Frederic Druilhet" a écrit :

Bon, j'ai trouvé encore plus simple. Une possibilité que j'avais déjà
essayée mais qui me renvoyait une erreur quoi que je fasse.
En fait, elle marche, mais, il faut metre des quotes plutot que des
guillements.
Tout se passe dans le bouton. Au commandname, on peut associer un
commandargument. mais, il faut databinder avec des simples quotes comme ceci
:

<asp:Button CommandName="btnSuppr" ID="btnSupprAlt" Runat="server"
Text="Supprimer" CommandArgument='<%#
databinder.eval(Container.DataItem,"ID") %>'></asp:Button>

ainsi, je recup l'ID de ma base de données très facilement pour traitement
ultérieur :

If e.CommandName = "btnSuppr" Then
Response.Write("Vous voulez supprimer l'ID : " & CStr(e.CommandArgument)
& "<BR>")
End If

Merci à ceux qui ont répondu !!!

Fred


"Frederic Druilhet" a écrit dans le message de
news:
> Merci, je vais l'essayer. Je vous tiens au courant ;-)
> a+
> Fred





Avatar
Frederic Druilhet
Pardon pour la présentation, ce blog étant destiné aux clients RSS en
priorité, mais, tout est là :

http://frenchw_dotnet.blogspot.com/2004/09/kod-boutons-dans-un-asprepeater.html

Pour l'avoir en RSS, c'est ici
http://frenchw_dotnet.blogspot.com/atom.xml

Bonne lecture. Ce blog étant constitué de bout de code utiles (enfin, pour
moi !)
Fred

"Al1" a écrit dans le message de
news:
Bonjour

Pourrais tu m'envoyer la page de code complète (html et script) avec le
repeater, le bouton supprimer et le sub qui permet de reccupérer l'ID que


je
puisse avoir une vue globale

J'ai essayé de "bricoler les elements de ton echange de message sans


succés.
Notemment je ne sais pas comment le bouton supprimer appelle le sub
rptResult_ItemCommand.
Ca fait maintenant quelques jours que je tourne autour et je fatigue

Merci d'avance
Alain

"Frederic Druilhet" a écrit :

> Bon, j'ai trouvé encore plus simple. Une possibilité que j'avais déjà
> essayée mais qui me renvoyait une erreur quoi que je fasse.
> En fait, elle marche, mais, il faut metre des quotes plutot que des
> guillements.
> Tout se passe dans le bouton. Au commandname, on peut associer un
> commandargument. mais, il faut databinder avec des simples quotes comme


ceci
> :
>
> <asp:Button CommandName="btnSuppr" ID="btnSupprAlt" Runat="server"
> Text="Supprimer" CommandArgument='<%#
> databinder.eval(Container.DataItem,"ID") %>'></asp:Button>
>
> ainsi, je recup l'ID de ma base de données très facilement pour


traitement
> ultérieur :
>
> If e.CommandName = "btnSuppr" Then
> Response.Write("Vous voulez supprimer l'ID : " &


CStr(e.CommandArgument)
> & "<BR>")
> End If
>
> Merci à ceux qui ont répondu !!!
>
> Fred
>
>
> "Frederic Druilhet" a écrit dans le message


de
> news:
> > Merci, je vais l'essayer. Je vous tiens au courant ;-)
> > a+
> > Fred
>
>
>