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 :

Récupérer les données de composants générés à la volée


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
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Par défaut Récupérer les données de composants générés à la volée
    Bonjour à tous!

    Je vous explique la situations. Dans ma page, je génère des composants à la volée, des GridView et des DropDownList.

    Là où j'ai besoin de votre aide, c'est que je ne sais pas comment faire pour récupérer les valeurs quand l'utilisateur clique sur un bouton.
    Comme les composants sont créés en C# dans le Page_Load, il faut accéder aux données avant que cette méthode soit exécutée...

    Aussi, les GridView étant larges, comment faire pour que la largeur de la page s'adapte automatiquement? J'ai essayé avec un panel de taille fixe, mais cela provoque un chamboulement total de la mise en forme...

    Merci d'avance pour votre aide!

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    C'est assez simple en fait. Tu dois implémenter la méthode qui envoi les données saisies au serveur. En général, il s'agit du click sur un bouton.

    Dans cette méthode tu recherche dans le sender les contrôles dont tu veux récupérer les valeur.

    Jette un oeil dans cette discussion: http://www.developpez.net/forums/d12...tbox-datalist/

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Par défaut
    Merci bien pour ta réponse!

    J'ai bien lu la discussion, mais je dois avouer que je n'ai pas tout compris...

    D'ailleurs j'ai repris la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    protected void Button1_Click(object sender, EventArgs e)
    {
        TextBox txt = (sender as Button).Parent.FindControl("txtQte") as TextBox;
    }
    Que j'ai "adaptée" pour mon gridview, mais ma variable reste null...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GridView txt = (sender as Button).Parent.FindControl("gw_duplicatedDatas_0") as GridView;
    Comme suggéré dans la discussion, j'ai vérifié que l'id du code HTML et celui que je donne à la méthode FindControl soient les bien les mêmes.

    En mode débug, j'ai pu voir que le ".Parent" représente le PlaceHolder, contenu dans la page .aspx, dans lequel j'ajoute les GridView créés à la volée.

    Maintenant je ne sais pas comment m'y prendre pour résoudre ce petit problème de nullité...

  4. #4
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Tu peux nous montrer le code qui génère les gridview?
    "Winter is coming" (ma nouvelle page d'accueil)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Par défaut
    Voilà le code pour la génération des 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
    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
     
    namespace WebApplication1.Administration
    {
        public partial class duplicatedDatas : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    string row;
                    string[] rowValue;
                    string filePath = "/CSV/" + Request.QueryString["id"];
     
                    Encoding encoding = Encoding.Default;
                    GridView grid;
                    DataTable dt;
                    DataTable savedRecordsDt = new DataTable();
                    ArrayList savedRecords = new ArrayList();
     
                    // Get the entire file path on the server
                    filePath = Server.MapPath(filePath);
     
                    // Verify if the file exists
                    if (File.Exists(filePath))
                    {
                        StreamReader streamReader = new StreamReader(filePath, encoding);
                        int counter = 0;
     
                        // Reading header
                        row = streamReader.ReadLine();
                        rowValue = row.Split(';');
     
                        // Reading content
                        while (streamReader.Peek() != -1)
                        {
                            row = streamReader.ReadLine();
                            rowValue = row.Split(';');
     
                            if (rowValue.Length == 16)
                            {
                                // Verify the required values
                                if (rowValue[0] == "" || rowValue[1] == "")
                                {
                                    //error
                                }
                                else
                                {
     
                                    //Create a person
                                    Person p = Methods.createPerson(rowValue);
     
                                    //Create the dataTable containing the duplicated records
                                    dt = Methods.getDuplicatesPerson(p);
     
                                    //Display the duplicated records only if the datatable contains any
                                    if (dt.Rows.Count > 1)
                                    {
                                        //Crate the label
                                        Label label = new Label();
     
                                        //Determine the title
                                        string title = "";
                                        if (p.IsMale == true)
                                            title = "Monsieur";
                                        else
                                            title = "Madame";
     
                                        //The label contains the peron's name
                                        label.Text = title + " " + p.Lastname + " " + p.Firstname;
     
                                        //Create the grid view and add in the arrayList
                                        grid = new GridView();
                                        grid.ID = "gw_duplicatedDatas_" + counter;
     
                                        grid.RowDataBound += new GridViewRowEventHandler(GridView_RowDataBound);
     
                                        //Attribute the dataTable to the grid view
                                        grid.DataSource = dt;
     
                                        grid.DataBind();
     
                                        //Add the components to the PlaceHolder in the .aspx page
                                        PlaceHolder_duplicates.Controls.Add(label);
                                        PlaceHolder_duplicates.Controls.Add(grid);
                                    }
                                    else
                                    {
                                        //Save the other data
                                        Methods.savePerson(p);
     
                                        //Add it in the datatable
                                        savedRecords.Add(p);
                                    }
                                }
                            }
                            else
                            {
                                //format de fichier incorrect
                            }
                            counter++;
                        }
     
                        // If we have saved records in the DB
                        if (savedRecords.Count > 0)
                        {
                            Label savedRecordsLabel = new Label();
                            savedRecordsLabel.Text = "Enregistrés dans la base de données";
     
                            //Create the datatable
                            savedRecordsDt = Methods.CreateDataTablePersonsFromArrayList(savedRecords);
     
                            //Create the gridview
                            GridView savedRecordsGW = new GridView();
     
                            //Add the dataTable containing the saved records
                            savedRecordsGW.DataSource = savedRecordsDt;
                            savedRecordsGW.DataBind();
     
                            //Add the dataTable containing the saved records in the placeHolder
                            PlaceHolder_duplicates.Controls.Add(savedRecordsLabel);
                            PlaceHolder_duplicates.Controls.Add(savedRecordsGW);
     
                            counter++;
                        }
     
                        //We have finish to read the csv file
                        streamReader.Close();
     
                        //Remove the csv file from the server
                        File.Delete(filePath);
     
                        nbGw.Value = counter+"";
                    }
                    else
                    {
                        Label1.Text = "existe po";
                    }
                }
                else
                {
     
                }
     
            }
     
            protected void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
            {
     
              if(e.Row.RowType == DataControlRowType.DataRow)
              {
     
                  Label l = new Label();
                  l.Text = e.Row.Cells[12].Text;
                  CheckBox cb = new CheckBox();
                  cb.ID = "chkSelect";
                // cb.id = ... and other control setup
                // add your control here:
                e.Row.Cells[12].Controls.Add(cb);
                e.Row.Cells[12].Controls.Add(l);
              }
            }
    La méthode quand on clique sur le bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            protected void Button_save_Click(object sender, EventArgs e)
            {
                //GridView txt = (sender as Button).Parent.FindControl("gw_duplicatedDatas_0") as GridView;
            }
    Merci beaucoup pour ton aide!

  6. #6
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Et tu le mets où le bouton "Button_save"? Je ne le vois pas dans ton code.
    Et ce bouton est sensé faire quoi?
    "Winter is coming" (ma nouvelle page d'accueil)

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/01/2006, 12h33
  2. XMLHttpRequest : Impossible de récupérer les données
    Par laurent_ifips dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 22/11/2005, 13h28
  3. [](VB) Récupérer les données dans un fichier .xml
    Par Furius dans le forum VBScript
    Réponses: 4
    Dernier message: 02/10/2005, 20h39
  4. Récupérer les données interbase dans une TStringGrid
    Par Ousse dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/03/2005, 12h51
  5. Récupérer les données d'une iframe
    Par juli1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 09/02/2005, 22h53

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