IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Supprimer une ligne dans une asp:listView


Sujet :

ASP.NET

  1. #1
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut Supprimer une ligne dans une asp:listView
    Je fais un traitement dans une listView :

    1. Je récupère des données dans une liste
    2. Je lie la liste à un ListView
    3. A chaque ligne du listLiew est associé un bouton
    4. Quand j'appuie sur un des bouton associé à une ligne du listView, "l'objet" dont les infos sont sur cette ligne change d'état (certaines des ses ptés sont modifiées)
    5. Quand l'utilisateur appuiera sur ce bouton, je veux faire un petit traitement javascript (côté client donc,) pour lui demander de confirmer son choix. (Une pop-up, Voulez vous confirmer, oui/non)
    6. Si l'utilisateur valide son choix, l'objet est modifié par le clic sur le bouton (mais côté serveur cette fois).
    7. La listView devra être mise à jour car le fait d'effectuer mon traitement côté serveur fait que l'objet ne rentre plus dans les critères pour entrer dans la listView.



    Ici ma question porte sur l'étape n°7 de mon traitement.
    A cette étape, je dois supprimer l'élément de ma listView que j'ai modifié (soit la ligne concernée).
    Suppression de l'élément dans ma ListView, la modification de l'élément dans la base de données ayant été fait juste avant.
    Je fais donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected void lvMyListView_ItemCommand(object sender, ListViewCommandEventArgs e)
        {
            ListViewDataItem dataItem = (ListViewDataItem)e.Item;
            lvMyListView.Items.Remove(dataItem);
            uPanelMyUpdatePanel.Update();
     
        }

    Plusieurs questions :

    1. Ca ne fonctionne pas : lors du deboguage, je vois bien que mon compte d'Items diminue de 1 mais je ne vois aucune répercussion visuellement sur ma ListView.
    C'est pour cela que j'essaye d'Update le UpdatePanel dans laquelle ma ListView se trouve.
    Mais même avec cet Update, aucun changement, visuellement ma ligne n'est pas supprimée.

    2. Là j'utilise l'évènement ItemCommand de la listView pour récupérer l'item à supprimer. Ce n'est pas exactement ce que je veux faire.
    Moi en fait je voudrais supprimer cette ligne à la fin de l'évènement OnClick
    du bouton associé à cette ligne dans ma listView. Est ce que c'est possible ?
    Comment récupérer l'index de la ligne à supprimer (ou carrément l'item) dans ma méthode OnClick ?

    Merci de votre aide.

  2. #2
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    tu peux binder dans le commandargument de ton bouton l'id de ton item. Ainsi tu pourra le récupérer dans ta fonction onclick, via le sender qui est en fait ton bouton (pense a caster ton sender pour avoir les propriétés de ton bouton).

    Pour mettre à jour ta list view, il te faut rebinder ta listview a ta liste pour que les changements soient pris en compte.

    bon code à toi,

  3. #3
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut
    En ce qui concerne la MAJ de ma listView,
    je supprime l'Item directement dans ma listView.

    Tu veux dire qu'après la modification effectuée , il faut que je recrée ma liste d'objets (en faisant une nouvelle requête dans ma base de donnée) puis rebind cette nouvelle liste avec mon ListView ?
    Justement j'ai pas envie de refaire une requête dans ma base de données.
    Car dans ce cas là, ca sert à rien de remove un item dans ma listeView puisque de toute façon juste derrière je vais lui associer une nouvelle source.

    Ou alors je t'ai mal compris ??

    Il n'y a pas moyen que ma listView prenne en compte mon remove sans lui rebinder une nouvelle source ?

  4. #4
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    Non je pensais que ton remove n'avait lieu que sur ta Liste d'objet. Auquel cas tu n'avais qu'à rebinder la listview, pour avoir le bon contenu.

  5. #5
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut
    Déjà merci de répondre aussi vite.


    Il doit forcément y avoir une méthode Refresh ou Update pour la listView pour prendre en compte mon remove. C'est obligé !

    L'unique moyen serait de :

    - modification de mon élément

    - requête base de données
    - obtention de la nouvelle liste source
    - liaison de ma nouvelle liste source à ma listView

    je peux pas y croire, il y a forcément un autre moyen.

  6. #6
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    Je ne comprends pas trop to dilemne. Voila comment je vois les choses :

    dans ta page tu as ta liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<MonObject> MaListe;
    et lorsque tu veux supprimer un element tu fais quelque chose du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MonService.remove(MonElement);
    MaListe.remove(MonElement);
    Le service parle a ta base de données, le "MaListe.remove" s'occupe de ta liste d'objet de ta page.


    Et ensuite à la toute fin tu databind ton listview. Inutile de s'occuper du listview avant, ce n'est que de l'affichage. Ce n'est pas lui ou ses items qui sont importants.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonListView.DataBind();
    Ainsi peu importe ce qu'il arrive dans ta page, la couche présentation n'en a rien a faire, elle ne fait qu'afficher ce qu'on lui donne.


    [EDIT] m'enfin pour nuancer mon propos, j'utiliserais la listview comme un repeater, il y a peut être des façons plus astucieuse de le faire...[/Edit]

Discussions similaires

  1. [XL-2007] Comment supprimer des lignes d'une plage dans une colonne sous condition
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 05/06/2015, 11h34
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. Supprimer les lignes d'une table dans une autre table
    Par blastmind dans le forum SAS Base
    Réponses: 2
    Dernier message: 28/04/2009, 14h17
  4. [MySQL] inserer une ligne d'une table dans une autre table
    Par piero53 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 14/12/2008, 18h29
  5. Réponses: 3
    Dernier message: 29/01/2008, 12h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo