D'un point de vue architectural, c'est zéro pointé. On ne doit jamais créer de lien direct entre l'UI et la couche d'accès aux données (DAL) comme tu l'as fait.
Comme j'imagine que tu as dû faire ça un peu partout dans ton programme, je vais te donner une solution crade pour arriver à tes fins...
Crée une classe, qui servira à recueillir les données provenant de ta base :
	
	1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
   | Public Class MaClass
 
    Private _monString As String
    Public Property MonString() As String
        Get
            Return Me._monString
        End Get
        Set(ByVal value As String)
            Me._monString = value
        End Set
    End Property
 
    Public Sub New(ByVal monString As String)
        Me._monString = monString
    End Sub
 
End Class | 
 
Ensuite pour charger ta DropDownList, il suffit d'exécuter la requête SQL, puis de stocker les résultats dans cette liste. Enfin, on bind la liste sur le DropDownList :
	
	1 2 3 4 5 6 7 8
   | Dim data As New List(Of MaClass)
 
Do While dReader.Read()
    data.Add(New MaClass(dReader.GetValue(0).ToString())
Loop
 
Me.sortImageList.DataSource = data
Me.sortImageList.DataBind() | 
 Et bien sûr, il ne faut pas oublier de préciser les valeurs des propriétés DataTextField et DataValueField. On y met le nom des propriétés contenues dans l'objet métier (ici l'objet métier est MaClass) :
	
	1 2
   | Me.sortImageList.DataTextField = "MonString"
Me.sortImageList.DataValueField = "MonString"  | 
 Il faut mettre le code ci-dessus avant l'appel à la méthode DataBind, sinon ça ne marchera pas. Il est aussi possible de faire ça dans le code ASPX de la page :
	
	<asp:DropDownList ID="sortImageList" runat="server" DataTextField="MonString" DataValueField="MonString" />
 
Si tu veux faire ça plus proprement, il te faut au minimum 3 couches :
- UI (User Interface, la couche de présentation = ce que voit l'utilisateur),
- BLL (Business Logic Layer, la couche de logique métier)
- DAL (Data Access Layer, la couche d'accès aux données)
Et un projet DTO (Data Transfert Objects) qui te permettra de transporter des choses entre les couches.
Dans la DAL, tu auras toute la logique d'accès aux données, donc c'est à ce niveau que la requête sera exécutée. Les données seront ensuite stockées dans la BLL, où il y a la classe "MaClass" qu'on a créé ici. Enfin, on viendra binder la DropDownList qui se trouve dans l'UI sur un objet de type List(Of MaClass).
						
					
Partager