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 :

Ajouter dynamiquement un textbox dans un GridView et récupérer ce qui est saisi


Sujet :

ASP.NET

  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Février 2009
    Messages : 26
    Par défaut Ajouter dynamiquement un textbox dans un GridView et récupérer ce qui est saisi
    Salut, je crois avoir bien expliquer mon problème dans l'intitulé, j'ai bon cherché mais je ne trouve comment ajouter un contrôle dynamiquement à mon GridView, et puis j'aurai besoin aussi de récupérer ce que l'utilisateur a saisi,
    Merci.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Par défaut
    bonjour,

    qu'as tu essayé ? quel est le problème ?

  3. #3
    Membre averti
    Inscrit en
    Février 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Février 2009
    Messages : 26
    Par défaut
    dans la fonction Page_LoadComplete :
    J'ai rempli la grille avec une ligne vide, juste pour pouvoir mettre un textbox dans la première cellule :

    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
    myTable = new DataTable("myTable"); // La Table de données
                DataColumn col; // Variable Temporaire
                DataRow Row; // Pour Remplire les lignes
     
                col = new DataColumn("Tâches");
                cols.Add(col);
                col = new DataColumn("Quota");
                cols.Add(col);
                col = new DataColumn("Imputé");
                cols.Add(col);
                col = new DataColumn("Imp HS ");
                cols.Add(col);
                col = new DataColumn("Commentaires");
                cols.Add(col);
     
     
                foreach (DataColumn column in cols)
                    myTable.Columns.Add(column);
     
     
                Row = myTable.NewRow();
                for (int i = 0; i < cols.Count ; i++)
                {
                    Row[i] = "";                            
                }
     
                myTable.Rows.Add(Row);
     
                myView = new DataView(myTable);
                GV.DataSource = myView;
                GV.DataBind();
    après cela j'ai instancier un TextBox et je l'ai mis dans la grille et ça marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TextBox tb = new TextBox();
                tb.ID = "essai";
                GrilleImputations.Rows[0].Cells[0].Controls.Add(tb);

    Lors le clique sur un bouton :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TextBox text;
                text = (TextBox)GrilleImputations.FindControl("essai");
                Response.Write(text.Text);
    lorsque j'exécute ceci je reçois l'erreure suivante :

    La référence d'objet n'est pas définie à une instance d'un objet.
    et quand j'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Response.Write(GrilleImputations.Rows[0].Cells[0].Controls.Count);
    le chiffre est 0 !

    Merci de bien vouloir m'aider.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Par défaut
    peux tu poster le code complet de l'évènement quand tu click sur le bouton

  5. #5
    Membre averti
    Inscrit en
    Février 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Février 2009
    Messages : 26
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            protected void Button3_Click(object sender, EventArgs e)
            {
            Response.Write(GrilleImputations.Rows[0].Cells[0].Controls.Count);
            TextBox text = (TextBox )GrilleImputations.Rows[0].FindControl("try");
            Response.Write("try");
            }

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Par défaut
    ton textbox il s'appelle "try" ou "essai" ton databind du gridview est bien confitionné par un Page.isPostBack ?

  7. #7
    Membre averti
    Inscrit en
    Février 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Février 2009
    Messages : 26
    Par défaut
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    if (!Page.IsPostBack)
    {
    Grille2 grille2 = new Grille2();
    grille2.ChargerGrille(GrilleImputations);
    TextBox tb = new TextBox();
    tb.ID = "try";
    GrilleImputations.Rows[0].Cells[0].Controls.Add(tb);
    }
     
    public void ChargerGrille(GridView GV)
            {
     
                #region déclarations
     
                myTable = new DataTable("myTable"); // La Table de données
                DataColumn col; // Variable Temporaire
                DataRow Row; // Pour Remplire les lignes
     
                #endregion
     
                #region Gestion des colonnes
     
                // Créer des Colonnes
                col = new DataColumn("Tâches");
                cols.Add(col);
                col = new DataColumn("Quota");
                cols.Add(col);
                col = new DataColumn("Imputé");
                cols.Add(col);
                col = new DataColumn("Imp HS ");
                cols.Add(col);
                col = new DataColumn("Commentaires");
                cols.Add(col);
     
                // Ajouter des Colonnes à la Table
                foreach (DataColumn column in cols)
                    myTable.Columns.Add(column);
     
                #endregion
     
                #region Remplire les Lignes
     
     
                Row = myTable.NewRow();
     
                for (int i = 0; i < cols.Count ; i++)
                {
                    Row[i] = "";
                }
     
                myTable.Rows.Add(Row);
     
                #endregion
     
                #region Mettre à jour la Table
     
                myView = new DataView(myTable);
                GV.DataSource = myView;
                GV.DataBind();
     
                #endregion
     
            }
     
            protected void Button3_Click(object sender, EventArgs e)
            {
                for (int i = 0; i < GrilleImputations.Rows.Count; i++)
                {
                    GridViewRow row = GrilleImputations.Rows[i];
                    string detail = ((TextBox)row.FindControl("try")).Text;
                    Response.Write(detail);
                }
            }


    et Merci Infiniment.

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Par défaut
    ca peut etre du fait que tu cherches le textbox sur chaque ligne de ton gridview et il me semble qu'il commence par la ligne de header (où il ne trouve pas ton controle) puis le body puis le footer.
    D'ailleurs verifies combien de ligne te renvoie GrilleImputations.Rows.Count

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            protected void Button3_Click(object sender, EventArgs e)
            {
                for (int i = 0; i < GrilleImputations.Rows.Count; i++)
                {
                    GridViewRow row = GrilleImputations.Rows[i];
                    If(row.RowType = DataControlRowType.DataRow )
                    {
                    string detail = ((TextBox)row.FindControl("try")).Text;
                    Response.Write(detail);
                    }
                }
            }

  9. #9
    Membre averti
    Inscrit en
    Février 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Février 2009
    Messages : 26
    Par défaut
    c'est toujours la même erreur sur l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string detail = ((TextBox)row.FindControl("try")).Text;
    La référence d'objet n'est pas définie à une instance d'un objet.

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Par défaut
    si tu mets en commentaire la ligne qui pose problème et que tu click sur ton bouton, est ce que tu vois toujours ton textbox ?

  11. #11
    Membre averti
    Inscrit en
    Février 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Février 2009
    Messages : 26
    Par défaut
    il ne donne plus d'erreur.
    Si Vous voulez je peux vous envoyer ce que j'ai réalisé pour que vous puissiez voir mieux,
    Merci Infiniment.

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Par défaut
    et ton textbox est toujours visible apres ?

  13. #13
    Membre averti
    Inscrit en
    Février 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Février 2009
    Messages : 26
    Par défaut
    oui,

    C'est bon j'ai trouvé une autre solutions, j'ai ajouter des colonnes de type textbox à travers l'editeur, et le reste à l'aide d'un DataTable avec du code.

    le seul soucis qui me reste c'est que les colonnes ajoutées par l'éditeur prennent la gauche, c'est normal ce sont les premières crées, y a t-il un moyen pour les faire bousculer à droite ?

    à part ça tout fonctionne à merveille, et Merci infiniment pour votre aide.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 5
    Par défaut
    Citation Envoyé par atjtwoo Voir le message
    oui,

    C'est bon j'ai trouvé une autre solutions, j'ai ajouter des colonnes de type textbox à travers l'editeur, et le reste à l'aide d'un DataTable avec du code.

    le seul soucis qui me reste c'est que les colonnes ajoutées par l'éditeur prennent la gauche, c'est normal ce sont les premières crées, y a t-il un moyen pour les faire bousculer à droite ?

    à part ça tout fonctionne à merveille, et Merci infiniment pour votre aide.
    est ce que tu peut m'envoyer le code de ta solution, sa sera gentille

    merci

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

Discussions similaires

  1. Ajout dynamique de HoverMenuExtender dans un GridView
    Par paolo2002 dans le forum ASP.NET Ajax
    Réponses: 2
    Dernier message: 12/07/2012, 13h53
  2. Insertion dynamique de textbox dans un gridview
    Par ahmedmido dans le forum ASP.NET
    Réponses: 1
    Dernier message: 06/08/2008, 13h11
  3. Ajout dynamique de .class dans Tomcat
    Par Arnard dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 15/12/2006, 14h42
  4. [Tableaux] Ajout dynamique de ligne dans un tableau
    Par gforce dans le forum Langage
    Réponses: 7
    Dernier message: 14/07/2006, 12h02
  5. ajouter dynamiquement des items dans un popup menu
    Par Malone dans le forum Composants VCL
    Réponses: 7
    Dernier message: 23/08/2005, 16h08

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