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 :

GridView : Insertion de ligne


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 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Par défaut GridView : Insertion de ligne
    Bonjour à tous,

    Cela fait 3 jours que j'essaie de modifier mon code pour essayer d'insérer une ligne dans le gridview juste avant celle qui est en train d 'être ajoutée dans le rowdatabound.

    Je m'explique avec un exemple :

    Ma requête trouve 6 lignes à mettre dans le gridview représentant 6 enregistrements de 3 types différents (A, B ou C)
    l.1: A
    l.2: A
    l.3: B
    l.4: B
    l.5: C
    l.6: C

    Je cherche à faire la somme des enregistrements de même type, puis à insérer une ligne représentant cette somme avant le prochain type. Dans cette exemple :
    l.1: A
    l.2: A
    new_line: (A+A)
    l.3: B
    l.4: B
    new_line: (B+B)
    l.5: C
    l.6: C
    new_line: (C+C)

    Le code proposé fait ceci:
    l.1: A
    l.2: A
    l.3: B
    newline: (A+A)
    l.4: B
    l.5: C
    newline: (B+B)
    l.6: C

    Pourquoi? Car quand je compare le type de la ligne en cours dans le rowdatabound avec celui de la ligne précédente (que je sauvegarde dans une var temporaire) et qu'il sont différents, j'insère ma nouvelle ligne, mais l'insertion s'effectue toujours après la ligne en cours. J'aimerai l'insérer avant la ligne en cours.

    Voilà comment je procède:

    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
     
    protected void grid_list_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            double test = 0;
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                try
                {
                    if (e.Row.RowIndex == 0) Tmp_ref = e.Row.Cells[0].Text;
                    else
                    {
                        if(Tmp_ref != e.Row.Cells[0].Text){
                            Table table = e.Row.Parent as Table;
                            CreateRow(table,e.Row.RowIndex);
                            }
     
                        Tmp_ref = e.Row.Cells[0].Text;
                    }
                }
                catch (NullReferenceException)
                { }
            }
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        private void CreateRow(Table table,int index)
        {
            GridViewRow row = new GridViewRow(1, 1, DataControlRowType.DataRow, DataControlRowState.Insert);
     
     
            row.Cells.Add(CreateColumn("New Row ", index, 1));
     
            table.Rows.Add(row);
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     
        private TableCell CreateColumn(string entete, double valeur, int span)
        {
            TableCell cell = new TableCell();
     
            cell.ColumnSpan = span;
     
            cell.Text = entete + valeur.ToString();
     
            return cell;
        }
    Je commence sérieusement à me demander si c'est possible à réaliser donc si quelqu'un de plus calé que moi à une idée je suis preneur, j'ai déjà essayé tellement de choses et d'autres ( AddAt[index] , RowCreated, fonction qui balaye de gridview etc etc ) .

    Cordialement,

    Lamarch'

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Par défaut
    HAHA !

    J'exulte ! j'ai trouvé au bout de 3 longues journées à repartir après le travail avec de la confiture à la place du cerveau.

    HAHA !

  3. #3
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 18
    Par défaut
    Salut,

    J'ai le même problème que toi, je cherche depuis 2 jours . Pourrais tu me donner ta solution ?

    Merci d'avance

  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
    Essaye de le faire dans le RowDataBinding plutôt que le RowDataBound

Discussions similaires

  1. INSERT multi-lignes avec valeurs connues
    Par herve91 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2006, 23h13
  2. [VB 6.0 + sql server] pb insertion de lignes trop nombreuses
    Par flores dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 30/10/2006, 16h29
  3. insert plusieur lignes
    Par allstar dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/10/2006, 15h46
  4. echec d'insertion de ligne dans une table
    Par foblar dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/07/2006, 10h13
  5. [Tableaux] Insertion dynamique ligne dans un tableau
    Par masseur dans le forum Langage
    Réponses: 12
    Dernier message: 28/03/2006, 14h53

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