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>
using System;
public partial class RoleControl: System.Web.UI.UserControl
{
public StringSelectedValue
{
get {return this.DropDownList1.SelectedValue; }
set {this.DropDownList1.SelectedValue =value; }
}
}
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;
}
J'espère que ce post vous sera utile. ça marche à merveille :)