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:
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:
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.