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 :

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


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 19
    Points
    19
    Par défaut La référence d'objet n'est pas définie à une instance d'un objet
    Bonjour à tous,

    je me permet de poster sur ce sujet car j'ai la même erreur et en double en plus.
    EDIT de Sankasssss : J'ai déplacé le message dans une nouvelle discussion sur le bon forum.

    La première fois au lancement de l'application le message s'affiche en haut à gauche de l'écran tel quel :
    "Une erreur est survenue au cours de la lecture !
    La référence d'objet n'est pas définie à une instance d'un objet."

    La première phrase provient d'un try/catch mais en regardant dans la partie try je n'ai pas trouvé à quel élément cela correspondait.

    La deuxième fois que l'erreur est levée c'est lorsque j'appuie sur le bouton de mon webform. L'erreur provient à ce moment là de la ligne 105, pour tant il me semble bien que la variable 'selection' est initialisé puisque je m'en sers 2 ou 3 ligne avant.

    Je suis en stage et je débute avec le framework .NET. L'appli que je dois réaliser doit pouvoir lire un fichier csv, afficher les enregistrements dans une grid et permettre de passer ces enregistrement individuellement ou ensemble dans une 2ème grid.

    Voila le code-behind qui correspond :
    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using DevExpress.Web.ASPxGridView;
    using System.IO;
    using System.Collections;
    using System.Data;
     
     
    namespace maquette1
    {
        public partial class _Default : System.Web.UI.Page
        {
     
            public DataTable Data { get; set; }
            public DataTable destData { get; set; }
            //public bool AllowSelectByRowClick {get; set; }
     
     
            protected void Page_Load(object sender, EventArgs e)
            {
                lectureFichier("C212000030.txt");
     
                DXgrid.DataSource = this.Data;
                DXgrid.DataBind();
                DXgrid.KeyFieldName = "Column3";
     
     
     
     
            }
     
            public void lectureFichier(string fichier)
            {
                try
                {
     
                    this.Data = new DataTable();
                    for (int i = 0; i < 33; i++)
                    {
                        this.Data.Columns.Add();
                    }
     
                    // Création d'une instance de StreamReader pour permettre la lecture de notre fichier 
                    StreamReader reader = new StreamReader(Server.MapPath(fichier));
                    string ligne = reader.ReadLine();
     
                    ligne = ligne.Replace((char)65533, ' '); //Remplacement du +- par un espace
     
                    // Lecture de toutes les lignes et affichage de chacune sur la page 
                    while (ligne != null)
                    {
     
                        var row = Data.NewRow();            //Création nouvelle ligne
                        row.ItemArray = ligne.Split(';');   //Définit les valeurs de la row avec la ligne
                        this.Data.Rows.Add(row);            //Ajoute la row au DataTable
     
     
     
                        ligne = reader.ReadLine();
                        ligne = ligne.Replace((char)65533, ' ');
                    }
     
                    // Fermeture du StreamReader (attention très important) 
                    reader.Close();
                }
                catch (Exception ex)
                {
                    // Code exécuté en cas d'exception 
                    Response.Write("Une erreur est survenue au cours de la lecture !");
                    Response.Write("</br>");
                    Response.Write(ex.Message);
                }
            }
     
            protected void Button1_Click(object sender, EventArgs e)
            {
     
                //DataTable destData = new DataTable();
     
                DataRow selection = DXgrid.GetDataRow(1);
     
                //Suppression de la ligne avant le transfert
                Data.Rows.Remove(selection);
     
     
                //Actualisation de l'affichage
                DXgrid.DataBind();
     
               //lbl_select.Text += row;
     
     
     
                // Display whether the delete operation succeeded.
     
                //Message.Text = "Row deleted successfully.";
     
     
                //DataRow selection = DXgrid.GetDataRow(1);
     
                //Ajout à la grille de destination
                destData.Rows.Add(selection);
                //string row = selection.ToString();
     
                //Liaison de la grille et sa source + MaJ affichage
                DXGridExport.DataSource = destData;
                DXGridExport.DataBind();
     
                //destData = DXgrid.Selection.IsRowSelected;
     
     
     
     
     
            }
     
     
            void CustomersGridView_RowDeleted(Object sender, GridViewDeletedEventArgs e)
            {
     
     
     
            }
        }
    }

    et le code du fichier aspx qui va avec :

    Code html : 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
    <%@ Page Title="Page d'accueil" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
        CodeBehind="Default.aspx.cs" Inherits="maquette1._Default" %>
     
    <%@ Register assembly="DevExpress.Web.ASPxGridView.v11.2, Version=11.2.11.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxGridLookup" tagprefix="dx" %>
    <%@ Register assembly="DevExpress.Web.ASPxGridView.v11.2, Version=11.2.11.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxGridView" tagprefix="dx" %>
    <%@ Register assembly="DevExpress.Web.ASPxEditors.v11.2, Version=11.2.11.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" namespace="DevExpress.Web.ASPxEditors" tagprefix="dx" %>
     
    <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
        <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.js"></script>
        <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7-vsdoc.js"></script>
    </asp:Content>
    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
        <h2>
           Maquette 1 : Grid
        </h2>
        <p>
     
        </p>
     
     
        <p>
        <dx:ASPxGridView ID="DXgrid" runat="server" 
            CssFilePath="~/App_Themes/Office2003Blue/{0}/styles.css" 
            CssPostfix="Office2003Blue">
     
            <Settings ShowFilterRow="True" ShowGroupPanel="True" ShowFooter="True" />
            <Images SpriteCssFilePath="~/App_Themes/Office2003Blue/{0}/sprite.css">
                <LoadingPanelOnStatusBar Url="~/App_Themes/Office2003Blue/GridView/gvLoadingOnStatusBar.gif">
                </LoadingPanelOnStatusBar>
                <LoadingPanel Url="~/App_Themes/Office2003Blue/GridView/Loading.gif">
                </LoadingPanel>
            </Images>
            <ImagesFilterControl>
                <LoadingPanel Url="~/App_Themes/Office2003Blue/Editors/Loading.gif">
                </LoadingPanel>
            </ImagesFilterControl>
            <Styles CssFilePath="~/App_Themes/Office2003Blue/{0}/styles.css" 
                CssPostfix="Office2003Blue">
                <Header ImageSpacing="5px" SortingImageSpacing="5px">
                </Header>
                <LoadingPanel ImageSpacing="10px">
                </LoadingPanel>
            </Styles>
            <StylesEditors>
                <ProgressBar Height="25px">
                </ProgressBar>
            </StylesEditors>
            <SettingsBehavior AllowSelectByRowClick="true" />
        </dx:ASPxGridView>
     
        <dx:ASPxGridView ID="DXGridExport" runat="server" 
            CssFilePath="~/App_Themes/Office2003Blue/{0}/styles.css" 
            CssPostfix="Office2003Blue">
     
        </dx:ASPxGridView>
     
            <asp:Label ID="lbl_select" runat="server" Text="Sélection : "></asp:Label>
     
     
     
           <br /> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
     
        </p>
     
    </asp:Content>

    J'espère que vous pourrez m'aider à résoudre ces problèmes car cela fait 2 jours que je bute sur le transfert des enregistrements d'une grille à l'autre et je commence à saturer !

    D'avance merci.

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut

    Tout d'abord, merci d'utiliser la balise CODE et non la balise CITATION, ça rend le code plus lisible, car là c'est un calvaire

    Pour le message "La référence d'objet n'est pas définie à une instance d'un objet.", je pense que ça peut venir du fait que tu n'initialises jamais ta propriété destData. Dans la méthode Button1_Click, rajoute cette ligne en premier :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    this.destData = new DataTable();

    Pour l'autre erreur, met un point d'arrêt sur la première ligne de ton try/catch, et avance pas à pas. Cela te permettra de voir à quelle ligne l'erreur est générée, quel est le contenu de tes variables à ce moment, et de voir le message d'erreur exact.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Merci pour cette réponse et désolé de ma maladresse. Je ferai plus attention aux balises employées à l'avenir.

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/09/2007, 10h38
  2. Réponses: 2
    Dernier message: 09/09/2007, 14h25
  3. Réponses: 8
    Dernier message: 04/06/2007, 16h20
  4. Réponses: 24
    Dernier message: 01/06/2007, 09h26
  5. Réponses: 8
    Dernier message: 11/07/2006, 17h27

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