Mon code n'affiche rien

kaaba Messages postés 2 Date d'inscription mercredi 25 octobre 2006 Statut Membre Dernière intervention 10 juin 2009 - 8 juin 2009 à 16:30
kaaba Messages postés 2 Date d'inscription mercredi 25 octobre 2006 Statut Membre Dernière intervention 10 juin 2009 - 10 juin 2009 à 12:27
Bonjour à tous.

je suis entrain de faire une fonction qui génère un menu de façon dynamique.
Mon problème est que mon code n'affiche rien.





Public









Function

menu_dynamique()


As





String










Dim

connection3


As

System.Data.SqlClient.SqlConnection =


Nothing










Dim

conn3


As





String

= ConfigurationManager.ConnectionStrings(


"ConnectionString"



).ConnectionString


connection3 =




New


System.Data.SqlClient.SqlConnection(conn3)







Dim

query


As





String

=


"SELECT * FROM page WHERE id_page_maitre=0 ORDER BY id_page"










Dim

le_menu


As





String

=


"
"










Dim

cmdSelect


As

System.Data.SqlClient.SqlCommand =


New



System.Data.SqlClient.SqlCommand(query, connection3)


connection3.Open()








Dim

reader_bloc


As



System.Data.SqlClient.SqlDataReader = cmdSelect.ExecuteReader()






While


reader_bloc.Read()







'''''''''''''''''''''''''''''''''''''










Dim

connection2


As

System.Data.SqlClient.SqlConnection =


Nothing










Dim

conn2


As





String

= ConfigurationManager.ConnectionStrings(


"ConnectionString"



).ConnectionString


connection2 =




New


System.Data.SqlClient.SqlConnection(conn2)







Dim

query2


As





String

=


"SELECT * FROM page WHERE id_page_maitre="

& reader_bloc.Item(


"id_page"



)







Dim

cmdSelect2


As

System.Data.SqlClient.SqlCommand =


New



System.Data.SqlClient.SqlCommand(query2, connection2)


connection2.Open()








Dim

nbre_ligne


As





Integer



= cmdSelect2.ExecuteNonQuery()







If

(nbre_ligne)


Then










'le_menu = le_menu & "<li>" & reader_bloc.Item("titre_page") & ""










Dim

reader_bloc2


As



System.Data.SqlClient.SqlDataReader = cmdSelect2.ExecuteReader()







'''''''''''''''''''''''''''''''''''''










Dim

lien


As





String

=


""










If





Not

reader_bloc.Item(


"lien_page"

).ToString().Equals(


""

)


Then




lien = reader_bloc.Item(





"lien_page"


)







Else




lien =






"contenu_page.aspx?pa="

& reader_bloc.Item(


"id_page"



)







End





If










If

reader_bloc2.Read()


Then










le_menu = le_menu &





"<li class='sousmenu'>

& lien &


"'>"

& reader_bloc.Item(


"titre_page"

) &


""




le_menu = le_menu &






""









While


(reader_bloc2.Read())







Dim

lien2


As





String

=


""










If





Not

reader_bloc2.Item(


"lien_page"

).ToString().Equals(


""

)


Then




lien2 = reader_bloc2.Item(





"lien_page"


)







Else




lien2 =






"contenu_page.aspx?pa="

& reader_bloc2.Item(


"id_page"



)







End





If




le_menu = le_menu &






"<li>

& lien2 &


"'>"

& reader_bloc2.Item(


"titre_page"

) &


"</li>"










End





While




le_menu = le_menu &






"</li>"










Else




le_menu = le_menu &






"<li>

& lien &


"'>"

& reader_bloc.Item(


"titre_page"

) &


""




le_menu &=






"</li>"










End





If










End





If




connection2.Close()









End





While




connection3.Close()




le_menu = le_menu &





"
"









Return


le_menu







End







Function


Apparement tout est correcte, pouvez vous m'aider svp.
Merci

2 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 36
8 juin 2009 à 22:32
Salut,

C'est pas la bonne manière de faire.

Il est préférable d'utiliser un repeater pour faire ce genre de manipulation.

Avec un point d'arret sur le return qu'as tu dans ta variable menu

Apres, comment tu ecris le menu dans ta page.

Conseils :
* externaliser la chaine de connexion
* utiliser des requetes paramétrées
* utiliser un stringbuilder pour faire le menu (c'est plus performant)
* executer 2 requetes pour avoir la meme chose c'est pas terrible
reader_bloc2.HasRow() pas besoin de compter le nombre de lignes
* Mettre des try catch finally pour bien fermer les connections et les readers
* Not reader_bloc.Item( "lien_page" ).ToString().Equals( "" )
est a remplacer par Not reader_bloc.Item( "lien_page" ).Equals(DBNull.Value)

Voila quelques infos pour améliorer ton code
0
kaaba Messages postés 2 Date d'inscription mercredi 25 octobre 2006 Statut Membre Dernière intervention 10 juin 2009
10 juin 2009 à 12:27
Merci nhervagault.

Je suis entrain de suivre tes conseils, dés que ça marche (ou pas) je te le montre .
0
Rejoignez-nous