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 :

Variable Session retourne null lors d'un postback.


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 50
    Points : 36
    Points
    36
    Par défaut Variable Session retourne null lors d'un postback.
    Bonjour, je débute avec les variables de session et j'aimerais savoir pourquoi j'obtiens un null lors d'un postback et comment régler ce problème.

    J'ai une aspxgridview (DevExpress) où j'utilise l’événement "AddNewRow".

    La première fois que je lance mon site web (en local), la page s'ouvre bien puis lorsque que je clique sur l'hyperlien "New" (qui repasse dans le page_load), j'obtiens un NullReferenceException (DataSet = Null).

    Mais le truc que je ne comprends pas est que lorsque je lance le site web une seconde fois,tout fonctionne bien, pas d'exception, et ce, jusque quand je réalise une nouvelle modification dans mon code et que je relance mon site web.

    Voici mon code Page_Load :

    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
     
    DataSet ds = null;
    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack && !IsCallback)
                {
                    ds = new DataSet();
                    DataTable masterTable = new DataTable();
                    masterTable.Columns.Add("RefArticle", typeof(int));
                    masterTable.Columns.Add("Description", typeof(string));
                    masterTable.Columns.Add("Quantity", typeof(int));
                    masterTable.Columns.Add("PU", typeof(decimal));
                    masterTable.Columns.Add("PUCurrency", typeof(decimal));
                    masterTable.Columns.Add("Discount", typeof(decimal));
                    masterTable.Columns.Add("Amount", typeof(decimal));
                    masterTable.Columns.Add("AmountCurrency", typeof(decimal));
                    masterTable.PrimaryKey = new DataColumn[] { masterTable.Columns["RefArticle"] };
     
                    ds.Tables.AddRange(new DataTable[] { masterTable });
                    Session["DataSet"] = ds;
                }
                else
                {
                    ds = (DataSet)Session["DataSet"];
                }
                ASPxGridViewArticles.DataSource = ds.Tables[0];
                ASPxGridViewArticles.DataBind();
            }
    Merci.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 36
    Points : 42
    Points
    42
    Par défaut quelques pistes
    Bonjour,
    Je n'utilise pas (DevExpress) mais voici quelques pistes.
    Vous avez placé votre code dans l’évènement "Load", ce n'est peu être pas sa place.
    Essayez de le placer dans l’évènement de votre LinkButton "New" ou si ce LinkButton est placé dans votre gridview recherchez le fonctionnement de l’évènement "RowCommand".
    Cordialement
    M. Brun

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 50
    Points : 36
    Points
    36
    Par défaut
    Merci pour votre réponse.

    J'ai pris ce bout de code d'un exemple DevExpress que j'ai modifié à ma manière.

    J'ai trouvé une solution mais je ne sais pas si c'est vraiment correcte :

    je vérifie si le DataSet est null, si null alors je réinitialise le 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
                if (!IsPostBack && !IsCallback)
                {
                    ds = InitializeDataSet(ds);
                    Session["DataSet"] = ds;
                }
                else
                {
                    ds = (DataSet)Session["DataSet"];
                    if (ds == null)
                    {
                        ds = InitializeDataSet(ds);
                        Session["DataSet"] = ds;
                    }
                }
                ASPxGridViewArticles.DataSource = ds.Tables[0];
                ASPxGridViewArticles.DataBind();

Discussions similaires

  1. ma variable Session retourne la valeur null ?
    Par spark dans le forum ASP.NET
    Réponses: 2
    Dernier message: 22/06/2009, 09h40
  2. Page.Session retourne nulle
    Par nonolerobot77 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 07/06/2007, 11h56
  3. Réponses: 1
    Dernier message: 17/01/2007, 21h52
  4. [Sécurité] variable de session à NULL, pourquoi?
    Par cladsam dans le forum Langage
    Réponses: 3
    Dernier message: 26/01/2006, 18h04
  5. Réponses: 2
    Dernier message: 19/04/2005, 11h27

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