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 :

erreur: La référence d'objet n'est pas définie à une instance d'un objet!


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 19
    Points
    19
    Par défaut erreur: La référence d'objet n'est pas définie à une instance d'un objet!
    Bonjour à tous!
    je travaille sur une application asp.net C#,
    J'utilise un GridView pour afficher des données provenant d'une table de ma base SQL Server, je veux que lorsque je clique sur une ligne, une nouvelle page s'affiche contenant les informations des champs de la ligne sélectionnée.
    donc j'ai créé une classe pour récupérer les champs une page pour mon gridview et une autre pour les détails:

    voilà le code de l'venement de selection dans mon 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
    public void GridView1_SelectedIndexChanged(object sender, EventArgs e)
            {
                GridViewRow row = GridView1.SelectedRow;
     
                Incident objIncident = new Incident();
                objIncident.Id_Incident= int.Parse(GridView1.SelectedRow.Cells[1].Text);
                objIncident.Login_Creation = GridView1.SelectedRow.Cells[2].Text;
                objIncident.Login_Assigned = GridView1.SelectedRow.Cells[3].Text;
                objIncident.Id_Type = int.Parse(GridView1.SelectedRow.Cells[4].Text);
                objIncident.Id_Priorite = int.Parse(GridView1.SelectedRow.Cells[5].Text);
                objIncident.Objet = GridView1.SelectedRow.Cells[6].Text;
                objIncident.Objet = GridView1.SelectedRow.Cells[7].Text;
     
                DetailIncident detail = new DetailIncident(objIncident);
                Response.Redirect("DetailIncident.aspx");
            }
    et voilà le code de ma classe qui va contenir les champs de la ligne et après depuis laquelle je peux les récupérer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        public class Incident
        {
                public int Id_Incident { get; set; }
                public string Login_Creation { get; set; }
                public string @Login_Assigned { get; set; }
                public int @Id_Type { get; set; }
                public int @Id_Priorite { get; set; }
                public string @Objet { get; set; }
                public string @Description { get; set; }        
        }
    et enfin voilà le code de ma page qui va contenir les champs de la ligne sélectionnée:
    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
     
    namespace afficherListeIncident1
    {
        public partial class DetailIncident : System.Web.UI.Page
        {
            private Incident monIncident;
            protected void Page_Load(object sender, EventArgs e)
            {
                AffichageDonnees();
            }
     
            public DetailIncident(Incident unIncident)
            {
                this.monIncident = unIncident;
            }
     
            private void AffichageDonnees()
            {
                L_Id_Incident.Text = this.monIncident.Id_Incident.ToString();
                L_Creation.Text = this.monIncident.Login_Creation;
                L_Assigned.Text = this.monIncident.Login_Assigned;
                L_Idtype.Text = this.monIncident.Id_Type.ToString();
                L_Priorite.Text = this.monIncident.Id_Priorite.ToString();
                L_objet.Text = this.monIncident.Objet;
                L_description.Text = this.monIncident.Description;
            }
     
        }
    }
    Mon problème c'est que lorsque je clique sur ""sélectionner", un erreur apparait mpe disant : "La référence d'objet n'est pas définie à une instance d'un objet"
    et c'est au niveau de cette ligne de la deuxieme page "DetailIncident"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     L_Id_Incident.Text = this.monIncident.Id_Incident.ToString();
    quelqu’un à une idée comment réparer ça!

  2. #2
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Apparemment, tu n'as pas instancié Incident dans ton form DetailIncident.
    Code c# : 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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
     
    namespace afficherListeIncident1
    {
        public partial class DetailIncident : System.Web.UI.Page
        {
            private Incident monIncident = new Incident (); // déclare et instancie ton objet Incident 
            protected void Page_Load(object sender, EventArgs e)
            {
                AffichageDonnees();
            }
     
            public DetailIncident(Incident unIncident)
            {
                this.monIncident = unIncident;
            }
     
            private void AffichageDonnees()
            {
                L_Id_Incident.Text = this.monIncident.Id_Incident.ToString();
                L_Creation.Text = this.monIncident.Login_Creation;
                L_Assigned.Text = this.monIncident.Login_Assigned;
                L_Idtype.Text = this.monIncident.Id_Type.ToString();
                L_Priorite.Text = this.monIncident.Id_Priorite.ToString();
                L_objet.Text = this.monIncident.Objet;
                L_description.Text = this.monIncident.Description;
            }
     
        }
    }
    N'oubliez pas le tag et

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Mercii Callo

    la nouvelle page s'affiche avec des valeurs nulles et pas avec les valeur de la ligne de gridview selectionnée

    voilà l'affichage dans ma nouvelle page :

    Id Incident : 0
    Login Creation :
    Login assigned :
    id type : 0
    id priorite : 0
    objet :
    description :

  4. #4
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Poses un point d'arrêt au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public DetailIncident(Incident unIncident)
    {
       this.monIncident = unIncident;
    }
    et vérifie si l'objet unIncident a les valeurs que tu as passées depuis le form appelant.
    N'oubliez pas le tag et

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    les valeurs :

    this.monIncident.Id_Incident.ToString();
    this.monIncident.Login_Creation;
    this.monIncident.Login_Assigned;
    this.monIncident.Id_Type.ToString();
    this.monIncident.Id_Priorite.ToString();
    this.monIncident.Objet;
    this.monIncident.Description;

    sont tous nulles!
    il n'est pas entrain de récupérer les valeurs de la page précédente!!!

  6. #6
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Dans ce cas, essayes de revoir ta procédure dans laquelle tu transmets l'objet Incident dans le constructeur de la form de détail. Poses aussi un point d'arrêt et essayes de déboguer pour voir l'orgine du problème. Je parle de ce 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
     
    public void GridView1_SelectedIndexChanged(object sender, EventArgs e)
            {
                GridViewRow row = GridView1.SelectedRow;
     
                Incident objIncident = new Incident();
                objIncident.Id_Incident= int.Parse(GridView1.SelectedRow.Cells[1].Text);
                objIncident.Login_Creation = GridView1.SelectedRow.Cells[2].Text;
                objIncident.Login_Assigned = GridView1.SelectedRow.Cells[3].Text;
                objIncident.Id_Type = int.Parse(GridView1.SelectedRow.Cells[4].Text);
                objIncident.Id_Priorite = int.Parse(GridView1.SelectedRow.Cells[5].Text);
                objIncident.Objet = GridView1.SelectedRow.Cells[6].Text;
                objIncident.Objet = GridView1.SelectedRow.Cells[7].Text;
     
                DetailIncident detail = new DetailIncident(objIncident);
                Response.Redirect("DetailIncident.aspx");
            }
    N'oubliez pas le tag et

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    bon au niveau de
    Response.Redirect("DetailIncident.aspx");
    les valeurs de :
    detail sont tous nulles
    et de objIncident elles contiennent les valeurs de la ligne selectonnée!
    je ne sais pourquoi "detail" de prend pas les valeurs de "objIncident" !

  8. #8
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Je n'ai jamais fait du webform avec asp.net. Je ne sais donc pas si cette façon de transmettre des paramètres via le constructeur suit le même principe que pour les winforms (j'en doute quand même). Surement qu'un membre habitué des webforms t'apportera plus d'aide. Tu peux aussi faire un tour ici. Il y a des pistes que que pourrais exploiter.
    N'oubliez pas le tag et

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Mercii Callo pour votre réponse,
    Mon problème est résolut, j'ai passé par une autre méthode pour afficher mes lignes

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/10/2011, 10h31
  2. Réponses: 6
    Dernier message: 31/03/2010, 09h56
  3. Réponses: 7
    Dernier message: 31/12/2009, 09h10
  4. Réponses: 0
    Dernier message: 29/12/2009, 09h51
  5. Réponses: 8
    Dernier message: 04/06/2007, 16h20

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