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 :

[C# WebForm] Suppression de ligne dans un DataGrid


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Par défaut [C# WebForm] Suppression de ligne dans un DataGrid
    Bonjour.

    Je remplis un DataGrid via un DataSet dans mon WebForm. Etant donné que le DataSet est perdu lors de chaque aller-retour client/serveur, j'enregistre celui-ci dans une variable session.

    Mon DataGrid contient sur chaque ligne le lien "Supprimer" qui fait appel a DeleteCommand lorsqu'on clique dessus. Je cherche à implémenter cette fonctionnalité, donc à supprimer la ligne correspondante de mon DataGrid, mais SANS SUPPRIMER les données contenues dans la base.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private void DataGrid_Resultat_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
      DataView dv=(DataView)Session["DataTableRecherche"];
     
      dv.Table.Rows[e.Item.ItemIndex].Delete();
     
      this.DataGrid_Resultat.DataSource=dv;
      this.DataGrid_Resultat.DataBind();
     
      Session["DataTableRecherche"]=dv;
    }
    Lorsque je supprime une ligne, ça fonctionne. Mais si je supprime la ligne suivante, ça me supprime la ligne qui est juste au-dessus. Idem si je tente de supprimer certaines lignes, soit ça supprime rien du tout, soit ça supprime la bonne ligne, soit ça supprime celle située juste au-dessus de celle qui devrait être normalement supprimée.

    Je pense que les index des liens "Supprimer" ne sont pas remis à jour à chaque DataBind(). Est-ce que quelqu'un aurait une idée d'où viens le problème, et également s'il connaît une solution pour que tout rentre dans l'ordre ? D'avance, merci.

  2. #2
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 239
    Par défaut
    salut,
    je ne sais aps si je pe tetre de grand aide mais
    les datagrid ont leur index qui commence a 0 . peut etre que dans ta fonction suprime tu suprime la mauvaise ligne.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Par défaut
    Etant donné que j'utilise le .Index ça me sélectionne bien la ligne correspondante au bouton Supprimer sur lequel je clique (j'ai doublement vérifié en mode pas à pas), mais par exemple si je clique sur la 4ème ligne (index = 3) ça me la supprime. Ensuite, si je clique sur la 4ème ligne actuelle (c'est à dire la 5ème ligne avant suppression), ça ne me la supprime pas.

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Tu refais un DataBind apres chaque suppression?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Par défaut
    Oui, pour que ça remette à jour le datagrid, c'est dans le code de la fonction delete.

    Peut être que ça vient de la fonction ItemDataBound, voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    private void DataGrid_Resultat_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
      //Vérifie si la recherche a renvoyé un résultat.
      DataView dv = (DataView)this.DataGrid_Resultat.DataSource;
     
      if(dv.Table.Rows.Count == 0) 
      {
        //Si aucun résultat n'est retourné par la requête.
        if((e.Item.ItemType == ListItemType.Header))
        {
          int i= e.Item.Cells.Count;
     
          //Affiche un message indiquant qu'aucun résultat n'a été retourné.
          e.Item.Cells[0].Text = "La recherche n'a retourné aucun résultat.";
          e.Item.Cells[0].HorizontalAlign=HorizontalAlign.Center;
     
          //Supprime les autres cellules du DataGrid.
          for (int j=i-1;j>0;j--)
          {
    	e.Item.Cells.RemoveAt(j);
          }
        }
      }
      else
      {
      }
    }

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Par défaut
    En fait, dans mon DataView, la ligne n'est pas supprimée (il y en a toujours le même nombre dans l'attribut Count de Table>Rows) mais par contre son statut est passé à "Deleted". Ce que je veux, c'est pouvoir la virer pour de bon de la DataView pour que MonDataGrid.DataSource = MonDataView puis refaire un DataBind juste après.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Effets d'ajout et de suppression de ligne dans un DataGrid
    Par black is beautiful dans le forum Flex
    Réponses: 0
    Dernier message: 27/05/2010, 12h38
  2. Suppression de lignes dans un fichier sous dos
    Par ducho dans le forum Windows
    Réponses: 2
    Dernier message: 16/05/2005, 10h20
  3. Suppression de lignes dans un fichier
    Par bubu dans le forum Linux
    Réponses: 2
    Dernier message: 13/01/2005, 10h36
  4. [C#] Largeur de colonne et de ligne dans un DataGrid
    Par pc152 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 31/08/2004, 14h09
  5. [VB.NET] Suppression de ligne dans un DataTable
    Par seemax dans le forum Windows Forms
    Réponses: 7
    Dernier message: 06/05/2004, 14h19

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