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

C# Discussion :

dataset et gridview


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 46
    Par défaut dataset et gridview
    Bonjour,
    SVP j'ai un problème qui m'occupe ça fait longtemps ?:
    je cherche à créer une gridview mais je veux l'utiliser juste pour inserer des lignes et les stocker dans la base de donnée et non pour la récupération des données de la BDD.
    c'est à dire je veux quelle m'affiche le schema de ma table (colonnes) et me donne le droit de créer des lignes pour saisir dedans mes donnees et enfin après la saisi de tous les lignes j'enrigistre dans la BDD.

    j'ai essayé avec les dataset mais j'arrive pas à touver mon bonheur.
    meme si je lie ma dridview avec une table vide les nom de colonnes ne s'affiche pas (plutot rien ne s'affiche) lorsque je debug.

    je vous envoie mon code 'dataset'
    -------------------------------------------------------------------

    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
    protected void Page_Load(object sender, EventArgs e)
        {
            //String str = "Data Source=pc-01;Initial Catalog=GEL;Integrated Security=True; Asynchronous Processing = true";
            //SqlConnection conn = new SqlConnection(str);
            //conn.Open();
     
            if (!IsPostBack)
            {
                // Declare the query string.
                String queryString ="Select nom, prenom From personne";              
     
                // Run the query and bind the resulting DataSet
                // to the GridView control.
                DataSet ds = GetData(queryString);
                if (ds.Tables.Count > 0)
                {
     
                    GridView1.DataSource = ds;
                    GridView1.DataBind();
                }
                else
                {
                    Message.Text = "Unable to connect to the database.";
                }
     
            }
        }
     
        DataSet GetData(String queryString)
      {
          String str = "Data Source=localhost; Initial Catalog=GEL;Integrated Security=True; Asynchronous Processing = true";
          SqlConnection conn = new SqlConnection(str);
          conn.Open();
     
        DataSet ds = new DataSet();    
        try
        {
            SqlDataAdapter adapter = new SqlDataAdapter(queryString, conn);     
            adapter.FillSchema(ds,SchemaType.Mapped,"personne");
            //adapter.Fill(ds,"personne");
        }
        catch(Exception ex)
        {
          // The connection failed. Display an error message.
          Message.Text = "Unable to connect to the BDD.";
     
        }
     
        return ds;
     
      }
        }
    --------------------------------------------------------

    merci de m'aider. toute information ou proposition de votre part sera pour moi une piste

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Par défaut
    Pourquoi ne pas faire des textbox et un bouton soumettre qui teste la validité des informations et provoque l'enregistrement en bdd?

  3. #3
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 46
    Par défaut
    parce que je dois saisir plusieur enregistrements en meme temps donc un tableau est mieux dans ce cas q'un formulaire de champs texte.

    j'ai meme essayé de créer un tableau de champs texte (une seule ligne s'affiche au départ) et un bouton ajouter qui donne la main pour créer des lignes dans le tableau, mais ça m'ajoute une seul ligne dans le tableau après meme si je clique rien ne se crée.

    voici 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
    protected void BtnAdd_Click(object sender, EventArgs e)
        {
     
                // créer une instace de ligne
                HtmlTableRow newRow = new HtmlTableRow();
     
                // Pour chacune des 3 colonnes
                for (int i = 0; i < 3; i++)
                {
                    TextBox tb = new TextBox();
                    HtmlTableCell cell = new HtmlTableCell();
                    cell.Controls.Add(tb);
                    newRow.Cells.Add(cell);               
                }
     
                Tab1.Controls.Add(newRow);
    }

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Par défaut
    C'est parce que tu n'es pas en winform. Il faut bien comprendre la différence avec le web. A chaque fois que tu clic sur un bouton AddRow il se produit un postback, et tout le cycle de création de la page est re-parcouru , autrement dit les controles vont être reconstruit avec les informations de l'aspx plus celle lié à l'évenement associé au clic du bouton. Donc ta table est recontruite à partir de l'aspx ,qui ne contient pas d'info sur les lignes potentiellement ajoutées, plus la ligne ajoutée par le handler du clic. "Elle rajoute à chaque fois ta ligne". Si tu veux qu'elle en rajoute d'autres il faut que tu garde en mémoire le nombre de ligne rajouté (cf view state).
    Un moyen de répondre à ton problème , serait de demander en plus à l'utilisateur le nombre de lignes qu'il veut rentrer. Comme ca un clic sur add provoque l'ajout de n lignes à ta table, que tu remplie puis tu valides pour une inscription sur la base de donnée.
    à+

  5. #5
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 46
    Par défaut
    merci, oui j'ai essayé de créer un champ texte où l'utilisateur entre le nombre de lignes quel veut et ça marche bien mais ce n'est pas opérationnel dans mon cas car l'utilisateur reçoit des documents contenant les noms de personnes qui peut atteindre des centaines donc c'est fatiguant de les compter.

    je me demande si vous pouvez m'éclaircir le point de view state ou me donner un exemple. j'ai déja integré les ViewSatate dans mon code précedent et ça donne:
    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
    protected void Page_Load(object sender, EventArgs e)
        {
            HtmlTableRow newRow = new HtmlTableRow();
            int nbLignesAjoutees = 0;
            if (ViewState["nbLignes"] != null)
            {
                nbLignesAjoutees = (int)ViewState["nbLignes"];
            }
            for (int j = 0; j < nbLignesAjoutees; j++)
            {
                for (int i = 0; i < 3; i++)
                {
                    //créer un champ
                    TextBox tb = new TextBox();
                    HtmlTableCell cell = new HtmlTableCell();
                    cell.Controls.Add(tb);
                    newRow.Cells.Add(cell);
                }
     
                Tab1.Controls.Add(newRow);
            }
     
        }
     
        protected void BtnAdd_Click(object sender, EventArgs e)
        {
     
                // créer une instace de ligne
                HtmlTableRow newRow = new HtmlTableRow();
     
                // Pour chacune des 3 colonnes
                for (int i = 0; i < 3; i++)
                {
                    TextBox tb = new TextBox();
                    HtmlTableCell cell = new HtmlTableCell();
                    cell.Controls.Add(tb);
                    newRow.Cells.Add(cell);               
                }
     
                Tab1.Controls.Add(newRow);
                int nbCases = (int)ViewState["nbLignes"];
                nbCases++;
                ViewState["nbLignes"] = nbCases;
            }
        }
    mais ça n'ajoute meme pas la ligne qui s'ajoute auparavant et lorsque je clique sur le bouton il me retourne vers le code et précisement la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int nbCases = (int)ViewState["nbLignes"];
    et me dit :
    La référence d'objet n'est pas définie à une instance d'un objet.
    je sais pas si vous pouvez m'aider.je vous remercie.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Par défaut
    Hello , essaye de modifier le code comme cela
    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
    protected void Page_Load(object sender, EventArgs e)
        {
            HtmlTableRow newRow = new HtmlTableRow();
            int nbLignesAjoutees = 0;
     
          if (ViewState["nbLignes"]== null) ViewState.Add("nbLignes",0);
     
            else
                nbLignesAjoutees = (int)ViewState["nbLignes"];
     
            for (int j = 0; j < nbLignesAjoutees; j++)
            {
                for (int i = 0; i < 3; i++)
                {
                    //créer un champ
                    TextBox tb = new TextBox();
                    HtmlTableCell cell = new HtmlTableCell();
                    cell.Controls.Add(tb);
                    newRow.Cells.Add(cell);
                }
     
                Tab1.Controls.Add(newRow);
            }
     
        }
     
        protected void BtnAdd_Click(object sender, EventArgs e)
        {
     
                // créer une instace de ligne
                HtmlTableRow newRow = new HtmlTableRow();
     
                // Pour chacune des 3 colonnes
                for (int i = 0; i < 3; i++)
                {
                    TextBox tb = new TextBox();
                    HtmlTableCell cell = new HtmlTableCell();
                    cell.Controls.Add(tb);
                    newRow.Cells.Add(cell);               
                }
     
                Tab1.Controls.Add(newRow);
                int nbCases = (int)ViewState["nbLignes"];
                nbCases++;
                ViewState["nbLignes"] = nbCases;
            }
        }

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/05/2009, 18h12
  2. GridView reste vide après remplissage depuis un dataset
    Par TheReturnOfMuton dans le forum ASP.NET
    Réponses: 5
    Dernier message: 17/02/2009, 17h32
  3. Datarelation Dataset Gridview
    Par BATCHOS CON TEQUILA dans le forum C#
    Réponses: 9
    Dernier message: 14/01/2009, 16h10
  4. Réponses: 10
    Dernier message: 28/06/2007, 15h27
  5. [C#|Gridview|Dataset] Remplir Gridview
    Par dumser1 dans le forum Windows Forms
    Réponses: 20
    Dernier message: 16/02/2006, 13h01

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