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.