ListBox

wahref Messages postés 15 Date d'inscription mercredi 30 mars 2005 Statut Membre Dernière intervention 7 mai 2005 - 29 avril 2005 à 18:18
cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 - 1 mai 2005 à 18:07
Bonjour à tous!
J'ai une base de données Access, je developpe un site web dynamique en ASP.Net.
J'ai une dll en vb.net ou je programme la connexion, et les requetes.
Mon problème c'est que j'ai une requete "select" dans ma dll et je veux l'appler dans As.net et je veux récupérer les données dans une ListBox .En fait tout vse passe bien sauf que il n'ya ni resultat sur ma page aspx ni messages d'erreur. J'ai essyé mon code sur une forme et ça passe bien et il m'affiche le resultat.
donc le problème réside dans la manipulation du ListBox en ASP.NET.
Je veux bien savoir comment ça se passe normalement pour la récupération de resultat d'une requete dans une ListBox.
Merci!

3 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
29 avril 2005 à 18:41
Tu peux nous en dire un peu plus sur ton code, normalement tu recuperes ton dataset, et tu fait un

thelist.datasource = thedataset
thelist.databind()

mais aprés tout depend ou tu fais ca, montre nous ton code, car si tu le fais à la suite d'un postback peut y avoir des problèmes, si tu fais pas ca comme il faut :)


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 1
1 mai 2005 à 18:04
salut,

voilà ce que je te suggère :

1 class pour les couples valeur/tesxt pour remplir les listes:


Public
Class MyItem



Private _Valeur
As
String



Private _Text
As
String



Public
Property Valeur()
As
String



Get



Return _Valeur



End
Get



Set(
ByVal Value
As
String)


_Valeur = Value



End
Set



End
Property



Public
Property Text()
As
String



Get



Return _Text



End
Get



Set(
ByVal Value
As
String)


_Text = Value



End
Set



End
Property



End
Class

et ensuite



'Dans cette sub, je passe la liste que je veux remplir en paramètre



'cette sub reste dans la page asp et ne doit pas être intégrée dans la dll d'accès aux données



'c'est une manière plus souple de faire.



Private
Sub ChargerPaysMethode2(
ByVal oList
As System.Web.UI.WebControls.ListControl)



Dim arrDataSource
As ArrayList


arrDataSource = ChargerArrayList("SELECT ID,NOM FROM PAYS", "ID", "NOM")


oList.DataValueField = "Valeur"


oList.DataTextField = "Text"


oList.DataSource = arrDataSource


oList.DataBind()



End
Sub



'Dans cette sub, je passe la liste que je veux remplir en paramètre



'cette sub reste dans la page asp et ne doit pas être intégrée dans la dll d'accès aux données



'c'est une manière plus souple de faire.



Private
Sub ChargerPersonnesMethode2(
ByRef oList
As System.Web.UI.WebControls.ListControl,
ByVal sPaysId
As
String)



Dim arrDataSource
As ArrayList



Dim sSQL
As
String


sSQL = "SELECT ID,NOM & ' ' & PRENOM as NomPrenom FROM PERSONNES WHERE PAYS_ID=" & sPaysId


arrDataSource = ChargerArrayList(sSQL, "ID", "NomPrenom")



'ici je dis queeles sont le propriétés de mon objet



'qui vont être bindé à ma liste.



'l'objet item possède les propriétés VALUE et TEXT.



'je bind donc ces 2 propriétés


oList.DataValueField = "Valeur"


oList.DataTextField = "Text"


oList.DataSource = arrDataSource


oList.DataBind()



End
Sub



'Cette fonction me retourne un objet de type Arraylist



'Cette ArrayList est remplie d'objets item,



'mais j'aurais pu y mettre un objet de ma création plus "précis"



'Par exemple créer un oject Personne



'Elle reçoit en paramètre le nom des champs qui doivent être stocké dans l'objet Item



Private
Function ChargerArrayList(
ByVal sSQL
As
String,
ByVal sItemValue
As
String,
ByVal sItemtext
As
String)
As ArrayList



Dim oConnection
As
New ADODB.Connection



Dim oRecordset
As
New ADODB.Recordset



Dim arrResult
As
New ArrayList



Dim item
As MyItem



Try


oConnection.Open(sConnectionString)


oRecordset = oConnection.Execute(sSQL)



While
Not oRecordset.EOF


item =
New MyItem


item.Valeur = oRecordset.Fields(sItemValue).Value.ToString()


item.Text = oRecordset.Fields(sItemtext).Value.ToString()


arrResult.Add(item)



'item = Nothing


oRecordset.MoveNext()



End
While



Return arrResult



Catch ex
As Exception



Finally


oRecordset =
Nothing


oConnection =
Nothing



End
Try



End
Function

yopyop
0
cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 1
1 mai 2005 à 18:07
le code complet de la page donne:

il faut bien entendu "sortir" le code de
Class MyItem et de ChargerArrayList pour qu'ils puissent être utilisés par toutes les pages aspx (tu peux les mettre dans ta dll).


Imports ADODB


Public
Class WebForm1



Inherits System.Web.UI.Page



Dim sConnectionString
As
String


#
Region " Web Form Designer Generated Code "



'This call is required by the Web Form Designer.


<System.Diagnostics.DebuggerStepThrough()>
Private
Sub InitializeComponent()



End
Sub



Protected
WithEvents Label3
As System.Web.UI.WebControls.Label



Protected
WithEvents Label4
As System.Web.UI.WebControls.Label



'liste des pays



Protected
WithEvents DropDownList3
As System.Web.UI.WebControls.DropDownList



'liste des personnes



Protected
WithEvents DropDownList4
As System.Web.UI.WebControls.DropDownList



'liste des personnes



Protected
WithEvents lbTest
As System.Web.UI.WebControls.ListBox



'NOTE: The following placeholder declaration is required by the Web Form Designer.



'Do not delete or move it.



Private designerPlaceholderDeclaration
As System.Object



Private
Sub Page_Init(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Init



'CODEGEN: This method call is required by the Web Form Designer



'Do not modify it using the code editor.


InitializeComponent()



End
Sub


#
End
Region



Private
Sub Page_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Load



'Put user code to initialize the page here


sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Inetpub\wwwroot\WebApplicationADODB\bdtest.mdb"



If
Not Page.IsPostBack
Then


ChargerPaysMethode2(
Me.DropDownList3)



Else


ChargerPersonnesMethode2(
Me.lbTest,
Me.DropDownList3.SelectedValue)


ChargerPersonnesMethode2(
Me.DropDownList4,
Me.DropDownList3.SelectedValue)



End
If



End
Sub






'Dans cette sub, je passe la liste que je veux remplir en paramètre



'cette sub reste dans la page asp et ne doit pas être intégrée dans la dll d'accès aux données



'c'est une manière plus souple de faire.



Private
Sub ChargerPaysMethode2(
ByVal oList
As System.Web.UI.WebControls.ListControl)



Dim arrDataSource
As ArrayList


arrDataSource = ChargerArrayList("SELECT ID,NOM FROM PAYS", "ID", "NOM")


oList.DataValueField = "Valeur"


oList.DataTextField = "Text"


oList.DataSource = arrDataSource


oList.DataBind()



End
Sub



'Dans cette sub, je passe la liste que je veux remplir en paramètre



'cette sub reste dans la page asp et ne doit pas être intégrée dans la dll d'accès aux données



'c'est une manière plus souple de faire.



Private
Sub ChargerPersonnesMethode2(
ByRef oList
As System.Web.UI.WebControls.ListControl,
ByVal sPaysId
As
String)



Dim arrDataSource
As ArrayList



Dim sSQL
As
String



Dim iCounter
As
Integer





sSQL = "SELECT ID,NOM & ' ' & PRENOM as NomPrenom FROM PERSONNES WHERE PAYS_ID=" & sPaysId


arrDataSource = ChargerArrayList(sSQL, "ID", "NomPrenom")



'ici je dis queeles sont le propriétés de mon objet



'qui vont être bindé à ma liste.



'l'objet item possède les propriétés VALUE et TEXT.



'je bind donc ces 2 propriétés


oList.DataValueField = "Valeur"


oList.DataTextField = "Text"


oList.DataSource = arrDataSource


oList.DataBind()



End
Sub



'Cette fonction me retourne un objet de type Arraylist



'Cette ArrayList est remplie d'objets item,



'mais j'aurais pu y mettre un objet de ma création



'Par exemple créer un oject Personne



'Elle reçoit en paramètre le nom des champs qui doivent être stocké dans l'objet Item



Private
Function ChargerArrayList(
ByVal sSQL
As
String,
ByVal sItemValue
As
String,
ByVal sItemtext
As
String)
As ArrayList



Dim oConnection
As
New ADODB.Connection



Dim oRecordset
As
New ADODB.Recordset



Dim arrResult
As
New ArrayList



Dim item
As MyItem



Try


oConnection.Open(sConnectionString)


oRecordset = oConnection.Execute(sSQL)



While
Not oRecordset.EOF


item =
New MyItem


item.Valeur = oRecordset.Fields(sItemValue).Value.ToString()


item.Text = oRecordset.Fields(sItemtext).Value.ToString()


arrResult.Add(item)



'item = Nothing


oRecordset.MoveNext()



End
While



Return arrResult



Catch ex
As Exception



Finally


oRecordset =
Nothing


oConnection =
Nothing



End
Try



End
Function



Public
Class MyItem



Private _Valeur
As
String



Private _Text
As
String



Public
Property Valeur()
As
String



Get



Return _Valeur



End
Get



Set(
ByVal Value
As
String)


_Valeur = Value



End
Set



End
Property



Public
Property Text()
As
String



Get



Return _Text



End
Get



Set(
ByVal Value
As
String)


_Text = Value



End
Set



End
Property



End
Class


End
Class

yopyop
0
Rejoignez-nous