OVH Cloud OVH Cloud

Question treeview

11 réponses
Avatar
Jean Claude
Bonjour



J'ai un GridView « gdv » qui m'affiche (requete sur table Access) une liste
de produits avec des checkbox pour pouvoir supprimer un produit

J'ai ajouté DataKeyNames="IDproduit" '( nom du DataField)

J'ai un bouton pour supprimer les produits cochés (ibMaj_Click)

Dans mon code j'ai :

Private Selection As New Hashtable



Protected Sub ibMaj_Click( _

ByVal sender As Object, _

ByVal e As System.Web.UI.ImageClickEventArgs) _

Handles ibMaj.Click



Dim row As GridViewRow = Gdv.SelectedRow

Dim chk As CheckBox



For Each row In Me.Gdv.Rows

If row.RowType = DataControlRowType.DataRow Then

chk = CType(row.Cells(7). _

FindControl("chkSupprimer"), CheckBox)

If chk.Checked Then

' Suppression d'un article

Me.SupprimerArticle( _

Me.Gdv.DataKeys(row.RowIndex).Value)

End If

End If

Next

End Sub

' Supprimer un article du panier

Public Sub SupprimerArticle(ByVal IDproduit As String)

'IDProduit = Session("Lindex")

If Selection.ContainsKey(IDproduit) Then

Selection.Remove(IDproduit)

End If



End Sub



Quand je lance l'appli, je coche la case de la 3eme ligne du gdv

Avec un pas a pas j'ai :



Me.Gdv.DataKeys(row.RowIndex).Value)=2

ce qui correspond au produit IDproduit=3

le If Selection.ContainsKey(IDproduit) est égal à 3

néanmoins le Selection.Remove(IDproduit) ne se fait pas

Pouvez-vous me dire ou est l'erreur

Cordialement



JClaude

1 réponse

1 2
Avatar
Patrice
Si je comprends bien cela ressemble à un "panier" pour gérer des commandes.
Il faudrait garder ces valeurs d'un appel à l'autre de page voire même
pendant toute la navigation sur le site...

Voir par exemple :
http://msdn2.microsoft.com/fr-fr/library/75x4ha6s.aspx
pour les options disponibles

--
Patrice

"Jean Claude" a écrit dans le message de
news: 4802f511$0$865$
Bonjour Patrice

Effectivement cette variable n'est pas initialisée, et je ne vois pas
comment faire

Jean Claude
"Patrice" <http://www.chez.com/scribe/> a écrit dans le message de news:
OOqIGg$
Il s'agit de la variable déclarée via :

Private Selection As New Hashtable

Pour l'instant je ne vois pas comment cette variable est initialisée ce
qui pourrait expliquer les pbs rencontrés pour y supprimer une valeur..

--
Patrice

"Jean Claude" a écrit dans le message de
news: 47ff5790$0$878$
Désolé mais je vois pas quelle variable, est-ce
Selection.Remove(IDproduit) ?

"Patrice" <http://www.chez.com/scribe/> a écrit dans le message de news:
%
Non je parle de la variable dont le nom est "Selection"...

"Jean Claude" a écrit dans le message
de news: 47ff3046$0$886$
Bonjour Patrice

La variable IDproduit est créée par le DataKeyName=IDproduit du
treeView

Donc quand je coche une case cela me donne la ligne
(Row.RowIndex).value, dans la procédure du bouton ibMaj_click (et cela
donne donc l'IDproduit)
Donc si je met un point d'arret sur le bouton j'ai :

1°) Protected Sub ibMaj_Click ......................
Dim row As GridViewRow = Gdv.SelectedRow
Dim chk As CheckBox
For Each row In Me.Gdv.Rows
If row.RowType = DataControlRowType.DataRow Then
chk = CType(row.Cells(7). _
FindControl("chkSupprimer"), CheckBox)
If chk.Checked Then
' Suppression d'un article
Me.SupprimerArticle( Me.Gdv.DataKeys(row.RowIndex).Value)
End If
End If
Next
End Sub

Je coche la premiere ligne et donc
Me.Gdv.DataKeys(row.RowIndex).Value=ligne 0
ensuit cele passe sur la procédure Supprimer un article du panier

Public Sub SupprimerArticle(ByVal IDproduit As String) ' si je mets ma
souris sur IDproduit cela me donne 11 qui l'IDproduit dans la base
Access

If Selection.ContainsKey(IDproduit) Then
Selection.Remove(IDproduit)
End If
End Sub

Et pourtant la ligne Selection.Remove n'est pas appelée
C'est bien cela que tu voulais ?
Jean Claude


"Patrice" <http://www.chez.com/scribe/> a écrit dans le message de
news: %
Que donne un point d'arrêt ? Il est facile de vérifier si ContainsKey
retourne bien vrai et si la ligne Selection.Remove est bien
appelée...

Pour l'instant, j'essayais de comprendre comment est créée la
variable Selection. Ne pas oublier qu'en ASP.NET la page est toujours
recréée de 0 à chque fois et pour l'instant je soupçonnerais plutôt
que la variable Selection est recrée à chaque fois ce qui annulerait
donc toute suppression que tu aurais pu y faire lors de la précédente
création de page...

Donc comment est créée cette variable ?

--
Patrice


"Jean Claude" a écrit dans le
message de news: 47ff0984$0$884$
Bonjour Patrice

le problème c'est qu'elle ne détruit pas la ligne, dans cette
procédure :

Public Sub SupprimerArticle(ByVal IDproduit As String)
If Selection.ContainsKey(IDproduit) Then
Selection.Remove(IDproduit)
End If
End sub
Et pourtant le Me.Gdv.DataKeys(row.RowIndex).Value) est bon il est
égal à la ligne 2, ce qui correspond au produit IDproduit=3, le If
............ saute le selection.remove

Cordialement
JClaude




"Patrice" <http://www.chez.com/scribe/> a écrit dans le message de
news: %
Au temps pour moi je parlais de la HashTable "Selection". Je pense
qu'elle pourrait être recréée avec la ligne détruite lors du
"postback" qui suit le "postback" ayant permis de détruire la
ligne...

--
Patrice

"Jean Claude" a écrit dans le
message de news: 47fe315b$0$874$
Bonjour Patrice

La sélection :
Je case une CkecBox du GridView, et je clic sur le bouton
J'ai une boucle For Next pour chercher la CheckBox cochée
ce qui me donne le rowIndex
ensuite Public Sub SupprimerArticle devrait supprimer la ligne

Jean Claude

"Patrice" <http://www.chez.com/scribe/> a écrit dans le message de
news:
La sélection est créée où ?

Il faut bien comprendre que la page est recrée à chaque fois donc
si la hastable selection est crée à partir de données présentes
en base elle sera recrée lors du prochain postback avec toutes
ses données même si une entrée y a été supprimée précédemment
(mais ce n'est pas la MEME ce'est juste la hastable qui avait été
créée le coup d'avant).


--
Patrice


"Jean Claude" a écrit dans le
message de news: 47fddf59$6$897$
Bonjour



J'ai un GridView « gdv » qui m'affiche (requete sur table
Access) une liste de produits avec des checkbox pour pouvoir
supprimer un produit

J'ai ajouté DataKeyNames="IDproduit" '( nom du DataField)

J'ai un bouton pour supprimer les produits cochés (ibMaj_Click)

Dans mon code j'ai :

Private Selection As New Hashtable



Protected Sub ibMaj_Click( _

ByVal sender As Object, _

ByVal e As System.Web.UI.ImageClickEventArgs) _

Handles ibMaj.Click



Dim row As GridViewRow = Gdv.SelectedRow

Dim chk As CheckBox



For Each row In Me.Gdv.Rows

If row.RowType = DataControlRowType.DataRow Then

chk = CType(row.Cells(7). _

FindControl("chkSupprimer"), CheckBox)

If chk.Checked Then

' Suppression d'un article

Me.SupprimerArticle( _

Me.Gdv.DataKeys(row.RowIndex).Value)

End If

End If

Next

End Sub

' Supprimer un article du panier

Public Sub SupprimerArticle(ByVal IDproduit As String)

'IDProduit = Session("Lindex")

If Selection.ContainsKey(IDproduit) Then

Selection.Remove(IDproduit)

End If



End Sub



Quand je lance l'appli, je coche la case de la 3eme ligne du gdv

Avec un pas a pas j'ai :



Me.Gdv.DataKeys(row.RowIndex).Value)=2

ce qui correspond au produit IDproduit=3

le If Selection.ContainsKey(IDproduit) est égal à 3

néanmoins le Selection.Remove(IDproduit) ne se fait pas

Pouvez-vous me dire ou est l'erreur

Cordialement



JClaude












































1 2