jeudi 7 février 2008

ASP.NET 2.0 - DropDownList de Rôles en C#

Ce post est une traduction de http://oudinia.blogspot.com/2008/02/grid-filter-and-text-changed.html, article rédigé par mon estimé collègue Oussama Dinia.

Ceci est un user control qui encapsule un DropDownList, un ObjectDataSource et une class Roles personnalisée et simplifiée. Le user contrôle se connecte à la base de données aspnetdb spécifiée dans le fichier web.config.
Pour les programmeurs VB.NET, voici un convertisseur sympa fournit par Telerik (www.telerik.com) :
http://www.codechanger.com/

Voici le code du user contrôle:

<%@control language="C#"autoeventwireup="true"codefile=" ddlRoles.ascx.cs"inherits="RoleControl"%>
<asp:dropdownlist id="DropDownList1" runat="server" datasourceid="sourceRoles" datatextfield
="RoleName"
   
datavaluefield="RoleName" width
="185px">
    </
asp:dropdownlist
>
<
asp:objectdatasourceid="sourceRoles"runat="server"selectmethod="GetRoles"typename="CustomRoles"> </asp:objectdatasource>

Le code behind du user contrôle:

using System; 

public partial class RoleControl: System.Web.UI.
UserControl  

    public StringSelectedValue  
    { 
        get {return this.DropDownList1.SelectedValue; } 
        set {this.DropDownList1.SelectedValue =value; } 
    } 
}
 
L'objet DataSource utilise la classe suivante:
 
using System;
using System.Web.Security;
using System.Collections.Generic;

public class
CustomRoles
{
    private string mRoleName;

    public string RoleName
    {
        get {return mRoleName; }
        set { mRoleName =value; }
    }

   
/// <summary>
    ///
Cette fonction parcourt tous les rôles de la base de données,
   
///
construit une collection de CustomRoles dans une liste générique de CustomRoles,
   
///
puis la liste est retournée pour etre utilisée comme source de données du contrôle DropDownList.
   
/// </summary>

   
publicList<CustomRoles> GetRoles()
    {
       
//getroles
       
string[] roleslist = Roles.GetAllRoles();
        int i = 0;

       
//instance de customroles
       
CustomRolesbr;

       
//creation de la liste (ou collection d'instances de CustomRoles)
       
List<CustomRoles> lstbr =new List<CustomRoles>();

       
//remplissage de la liste en parcourant le tableau de strings
       
foreach(string brolein roleslist)
        {
            br = new CustomRoles();
            br.RoleName = brole;
            lstbr.Add(br);
        }
        return lstbr;
    }
Vos commentaires sont les bienvenus.

J'espère que ce post vous sera utile. ça marche à merveille :)