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 : bouton edit, ajouter


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut Gridview : bouton edit, ajouter
    Bonsoir,

    Dans le GridView que j'affiche, j'aimerais y ajouter des boutons pour l'édition, et éventuellement ajouter une nouvelle ligne (si c'est possible). Sauf que je ne vois pas comment l'implémenter dans mon code actuel.

    Mon GirdView est généré dynamiquement, donc je pense qu'il faut rajouter quelques détails pour savoir si c'est un bouton ou si c'est des données prisent du DataSet. Si quelqu'un pouvait me donne une petite idée ou le chemin à suivre, merci bien! : )

    Voici mon code.

    Ci-dessous, la classe qui génère les colonnes:
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    public class DynamicGridViewTextTemplate : ITemplate
        {
            string _ColName;
            DataControlRowType _rowType;
            int _Count;
     
            public DynamicGridViewTextTemplate(string ColName, DataControlRowType RowType)
            {
                _ColName = ColName;
                _rowType = RowType;
            }
     
            public DynamicGridViewTextTemplate(DataControlRowType RowType, int ArticleCount)
            {
                _rowType = RowType;
                _Count = ArticleCount;
            }
     
            public void InstantiateIn(System.Web.UI.Control container)
            {
                switch (_rowType)
                {
                    case DataControlRowType.Header:
                        Literal lc = new Literal();
                        lc.Text = "<b>" + _ColName + "</b>";
                        container.Controls.Add(lc);
                        break;
                    case DataControlRowType.DataRow:
                        Label lbl = new Label();
                        lbl.DataBinding += new EventHandler(this.lbl_DataBind);
                        container.Controls.Add(lbl);
                        break;
                    default:
                        break;
                }
            }
     
            private void lbl_DataBind(Object sender, EventArgs e)
            {
                Label lbl = (Label)sender;
                GridViewRow row = (GridViewRow)lbl.NamingContainer;
                lbl.Text = DataBinder.Eval(row.DataItem, _ColName).ToString();
            }
        }
    Ma fonction qui prend en paramètre, le DataSet avec les données, le nom et l'ID à afficher comme header du GridView:
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    private void createAndDisplayGridView(DataSet questions, String categoryName, String categoryID)
            {
                for (int j = 0; j < questions.Tables.Count; j++)
                {
                    if (questions.Tables[j].Rows.Count > 0)
                    {
                        GridView gvDynamic = new GridView();
                        gvDynamic.Width = Unit.Pixel(900);
                        //gvDynamic.HorizontalAlign = HorizontalAlign.Center;
                        gvDynamic.BorderWidth = Unit.Pixel(1);
                        gvDynamic.Caption = "<div id=\"nifty\" class=\"PostCategory\"> <b class=\"rtop\"><b class=\"r1\"></b><b class=\"r2\"></b><b class=\"r3\"></b><b class=\"r4\"></b></b>" + categoryID + " - " + categoryName + " <b class=\"rbottom\"><b class=\"r4\"></b><b class=\"r3\"></b><b class=\"r2\"></b><b class=\"r1\"></b></b></div>";
                        gvDynamic.AutoGenerateColumns = false;
                        gvDynamic.ShowFooter = false;
                        TemplateField tf = null;
     
                        tf = new TemplateField();
                        tf.HeaderTemplate = new DynamicGridViewTextTemplate("ID", DataControlRowType.Header);
                        tf.ItemTemplate = new DynamicGridViewTextTemplate("ID", DataControlRowType.DataRow);
     
                        gvDynamic.Columns.Add(tf);
     
                        tf = new TemplateField();
                        tf.HeaderTemplate = new DynamicGridViewTextTemplate("Question(s)", DataControlRowType.Header);
                        tf.ItemTemplate = new DynamicGridViewTextTemplate("child", DataControlRowType.DataRow);
                        gvDynamic.Columns.Add(tf);
     
                        tf = new TemplateField();
                        tf.HeaderTemplate = new DynamicGridViewTextTemplate("Pondération", DataControlRowType.Header);
                        tf.ItemTemplate = new DynamicGridViewTextTemplate("weighting", DataControlRowType.DataRow);
                        gvDynamic.Columns.Add(tf);
     
                        tf = new TemplateField();
                        tf.HeaderTemplate = new DynamicGridViewTextTemplate("Question par Defaut?", DataControlRowType.Header);
                        tf.ItemTemplate = new DynamicGridViewTextTemplate("isDefaultQuestion", DataControlRowType.DataRow);
                        gvDynamic.Columns.Add(tf);
     
                        gvDynamic.DataSource = questions.Tables[j];
                        gvDynamic.DataBind();
                        plHDynGridView.Controls.Add(gvDynamic);
                    }
                }
            }//createAndDisplayGridView
    Je pense que je ne suis pas loin du résultat, mais je ne sais pas trop comment faire :/

    Merci bien pour votre et bonne soirée!

    L.

  2. #2
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    qu'il est laid ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gvDynamic.Caption = "<div id=\"nifty\" class=\"PostCat
    un beau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gvDynamic.Caption = String.Format ("<div id='nifty' class='PostCat'>{0}</div>'", taVariable);
    c'est autrement plus propre, plus clair à lire, plus facilement modifiable et surtout tu n'as pas à échaper chaque quote présente.



    ma question ensuite, sera: qu'est-ce que tu appelles dynamique? pour moi tes colonnes sont en dur dans le code. je vois donc pas ce qui t'empeche d'ajouter les boutons d'éditions à cet endroit.


    pour finir, il suffit de rajouter une colonne de type Command, de lui accrocher un event et tu auras une méthode dédiée qui ne sera appelée QUE lorsque tu feras un clic. Tu peux alors utiliser cette colonne commande pour y ajouter un CommandName et un CommandAttribute qui sera par exemple l'ID de l'élément à éditer.



    question bonus. c'est censé faire quoi? (oui je suis chi*nt )
    <b class="r1"></b>
    j'ai du mal à comprendre l'intérêt de la balise bold même stylée. Une balise <span> est probablement faite pour ce que tu souhaites faire

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut
    Je n'ai pas trop le temps de répondre là, je prépare mes affaires pour mes vacances demain!

    Par contre, je te répond immédiatement lorsque je suis de retour

    PS: Je suis d'accord avec toi, mon code est horrible, mais c'est du temporaire

    Bonne soirée,

    L.

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    ma question ensuite, sera: qu'est-ce que tu appelles dynamique? pour moi tes colonnes sont en dur dans le code. je vois donc pas ce qui t'empeche d'ajouter les boutons d'éditions à cet endroit.
    Bah en fait, pour les bouton d'éditions, il y a je pense beaucoup plus à faire qu'à simplement les ajouters: détecter quand la colonne créer est un label/bouton/donnée/etc, puis créer le bouton. Après je sais qu'il y a également un certains nombre de choses à faire pour rendre la ligne éditable, mais je ne sais pas quoi :/


    pour finir, il suffit de rajouter une colonne de type Command, de lui accrocher un event et tu auras une méthode dédiée qui ne sera appelée QUE lorsque tu feras un clic. Tu peux alors utiliser cette colonne commande pour y ajouter un CommandName et un CommandAttribute qui sera par exemple l'ID de l'élément à éditer.
    Mmhh, pas sur d'avoir tout compris... est-ce que tu as un petit exemple/tuto sous la main?

    question bonus. c'est censé faire quoi? (oui je suis chi*nt )

    j'ai du mal à comprendre l'intérêt de la balise bold même stylée. Une balise <span> est probablement faite pour ce que tu souhaites faire
    Aucune idée, c'est du code piqué par-ci par-là

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/10/2009, 17h23
  2. [VB.NET][2.0] Gridview : gérer les ajouts
    Par EMC51 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 02/08/2007, 14h30
  3. bouton qui ajoute un enregistrement dans une table
    Par petitours dans le forum Access
    Réponses: 1
    Dernier message: 06/12/2006, 13h33
  4. Réponses: 1
    Dernier message: 25/10/2006, 22h03
  5. Réponses: 10
    Dernier message: 12/07/2006, 13h00

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