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 :

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


Sujet :

ASP.NET

  1. #1
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut La référence d'objet n'est pas définie à une instance d'un objet.
    Bonjour, sur une page inscription du module authentification d'asp; je veux afficher la liste des roles que j'ai au niveau de ma base des données, et la charger dans un <asp:RadioButtonList DataTextField="RoleName" DataValueField="RoleId" ID="UserRoles" runat="server" Width="100%" RepeatDirection="Vertical" /> pour affecter les roles adequats a l'utilisateur en cours de creation, pour cela j'ai mis :
    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.Security;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Data;
     
    public partial class Account_Inscription : System.Web.UI.Page
    {
        private static SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DRE_kenitraConnectionString"].ConnectionString);
     
        protected void Page_Load(object sender, EventArgs e)
        {
            RegisterUser.ContinueDestinationPageUrl = Request.QueryString["ReturnUrl"];
     
            if (!IsPostBack)
            {
                getRoles();
            }
        }
     
        protected void RegisterUser_CreatedUser(object sender, EventArgs e)
        {
     
            FormsAuthentication.SetAuthCookie(RegisterUser.UserName, false);
     
            string continueUrl = RegisterUser.ContinueDestinationPageUrl;
            if (String.IsNullOrEmpty(continueUrl))
            {
                continueUrl = "~/";
     
     
                String userName = Request.QueryString["userName"];
     
                MembershipUser user = Membership.GetUser(userName);
     
                object UserGUID = user.ProviderUserKey;
     
                RadioButtonList UserRoles = (RadioButtonList)RegisterUser.FindControl("UserRoles");
     
                foreach (ListItem rolebox in UserRoles.Items)
                {
                    if (rolebox.Selected)
                    {
                        if (!Roles.IsUserInRole(userName, rolebox.Text))
                        {
                            try
                            {
                                connection.Open();
                                string InsertQ = "INSERT INTO dbo.aspnet_UsersInRoles (UserId, RoleId)  VALUES ('" + (Guid)UserGUID + "', '" + rolebox.Text + "');";
                                SqlCommand MyCmd = new SqlCommand(InsertQ, connection);
                                MyCmd.ExecuteNonQuery();
                                connection.Close();
                            }
                            catch (SqlException ex)
                            {
     
                            }
                            finally
                            {
                                connection.Close();
                            }
     
                        }
                    }
                }
                Response.Redirect(continueUrl);
            }
        }
     
        protected void btnRetour_Click(object sender, EventArgs e)
        {
            Response.Redirect("Utilisateurs.aspx");
        }
     
        private void getRoles()
        {
            connection.Open();
            RadioButtonList UserRoles = (RadioButtonList)RegisterUser.FindControl("UserRoles");
     
            string query = "SELECT * FROM dbo.aspnet_Roles order by RoleName asc;";
            SqlCommand command = new SqlCommand(query, connection);
     
            SqlDataReader reader = command.ExecuteReader();
            DataTable dt = new DataTable();
            dt.Load(reader);
            if (dt.Rows.Count > 0)
            {
                UserRoles.DataSource = dt;
                UserRoles.DataBind();
            }
            reader.Close();
            connection.Close();
        }
    }
    j'ai une erreur au niveau de la ligne : UserRoles.DataSource = dt; il me dit :
    La référence d'objet n'est pas définie à une instance d'un objet.

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Salut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RadioButtonList UserRoles = (RadioButtonList)RegisterUser.FindControl("UserRoles");
    ne te renvoie rien et c'est le probleme. As-tu vraiment besoin d'un find control ?


    Le code est pas particulierement lisible donc dur d'en dire plus

    voila.

  3. #3
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut
    Si je ne met pas le find user il ne connais pas le userroles

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par défaut
    Si ton contrôle se trouve sur ta page tu dois pouvoir l'acceder directement sans faire de find...Si il se trouve dans un autre contrôle (usercontrol) je ferais plutot un findcontrol sur cet objet là...
    Pour récupérer les rôles je ferais plutot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Web.Security.Roles.GetAllRoles();

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