Accueil > Forum > > > > probleme de siteMap et treeview crée dynamiquement
probleme de siteMap et treeview crée dynamiquement
lundi 3 août 2009 à 15:20:52 |
probleme de siteMap et treeview crée dynamiquement

kaygee
|
Hello,
J'ai un souci avec mon siteMap source de mon treeview.
Je crée un string XML contenant mon siteMap crée sur base d'une DB sqlserver.
Tout fonctionne bien, gros problème, c'est qu'au lieu d'avoir en titre de menu le title de mon sitemap et en lien, l'url j'ai le mot siteMapNode qui s'affiche partout.
Pourriez-vous m'aider merci?
voici mon code
Code :
Code ASP.NET : Private Function buildXMLMenu(ByRef oDataSet As DataSet) As String
'Dim parentNode As TreeNode
' Dim childNode As TreeNode
Dim sortSubMenu As String
sortSubMenu = "LevelOrder ASC"
Dim selectSubMenu As String
Dim navigateString As StringBuilder = New StringBuilder()
' En-tete du fichier Site Map File
navigateString.Append("<?xml version=""1.0"" encoding=""utf-8"" ?>")
navigateString.Append("<siteMap xmlns=""http://schemas.microsoft.com/AspNet/SiteMap-File-1.0"">")
For Each parentRows As DataRow In oDataSet.Tables("Menu").Select("MenuLevel = 0", sortSubMenu)
selectSubMenu = "UpperLevel = " & parentRows.Item("ID").ToString
' création du sous-menu si existant
If oDataSet.Tables("Menu").Select(selectSubMenu, sortSubMenu).Length > 0 Then
' menu parent avec menu enfant
navigateString.Append("<siteMapNode title=""" & parentRows.Item("libla") & """>")
For Each childRows As DataRow In oDataSet.Tables("Menu").Select(selectSubMenu, sortSubMenu)
navigateString.Append("<siteMapNode url=""" & childRows.Item("MenuAction") & """ title=""" & childRows.Item("libla") & """ />")
Next
navigateString.Append("</siteMapNode>")
Else
' Menu parent sans menu enfant
navigateString.Append("<siteMapNode url=""" & parentRows.Item("MenuAction") & """ title=""" & parentRows.Item("libla") & """ />")
End If
Next
navigateString.Append("</siteMap>")
buildXMLMenu = navigateString.ToString
End Function
Code :
Code ASP.NET : Private Sub buildMenu()
' fonction pour attribuer au menu les informations récupérée par l'objet createMenu sous forme XML
Dim menuDataSource As XmlDataSource = New XmlDataSource()
menuDataSource.ID = "MainMenu"
menuDataSource.Data = Session("siteMapMenu")
menuDataSource.DataBind()
mnuPerso.DataSource = menuDataSource
mnuPerso.DataBind()
End Sub
|
|
lundi 3 août 2009 à 17:18:31 |
Re : probleme de siteMap et treeview crée dynamiquement

gabj
|
Bonjour,
Tu peux réaliser ton siteMap dynamiquement en utilisant les objets ASP.Net.
1/ tu crées un SiteMapDataSource
Code Visual Basic :
<asp:SiteMapDataSource ID="SitMapDataSource1" runat="server" />
2/ Tu crées ton Treeview que tu bindes à ton SiteMapDataSource
Code Visual Basic :
<asp:TreeView ID="treeNav" runat="server" SourceID="SiteMapDataSource1" />
3/Tu dois modifier le provider de ton siteMapDataSource pour pouvoir récupérer tes données à partir d'une base de données :
- Je te conseille de créer une table dans laquelle tu stockeras tes tuples du siteMap
- Je te conseille également de créer une procédure stockée qui te renverra l'ensemble des informations à la création dynamique de ton siteMap
A partir de ce moment tu peux commencer à créer un provider spécifique à ton siteMap, pour cela tu dois faire dériver la classe de ton provider personnalisé de Code C# :
4 / Tu mets à jour ton Web.Config pour le chargement des constantes d'initialisation de ton siteMapProvider :
Code XML :
<system.web>
<siteMap defaultProvider="SqlSiteMapProvider">
<providers>
<add name="SqlSiteMapProvider" type="SqlSiteMapProvider"
providerName="System.Data.SqlClient"
connectionString="Ta Connection"
storedProcedure="Ta Procedure Stockée" />
</providers>
</siteMap>
...
</system.web>
5/ A partir de maintenant tu peux surcharger ta méthode substituée Initialize de ta classe de base (dans ce cas StaticSiteMapProvider). Tu as un exemple de code dans la msdn.
Bon courage
Jérôme GABRIEL
MCTS ASP.Net
|
|
mardi 4 août 2009 à 11:01:20 |
Re : probleme de siteMap et treeview crée dynamiquement

kaygee
|
Pas mal du tout et surtout très optimisé, mais mon souci à ce niveau c'est que le menu se construit en fonction de critère défini par le type de client et les autorisations dont il dispose.
je peux créer une storedprocedure mais je dois pouvoir lui passer nombres de paramètre qui déterminerons le visage de mon menu
|
|
mardi 4 août 2009 à 11:09:17 |
Re : probleme de siteMap et treeview crée dynamiquement

kaygee
|
De plus mon intention en plaçant mon sitemap dans une variable de session c'est que je ne veux pas devoir à chaque page et chaque refresh me reconnecter à ma db.
Donc en gros je créais mon siteMap lors de mon identification, et mon menu qui se trouve dans ma master page prend pour base cette variable de session plutot que de relancer chaque fois ma storedprocedure.
mais si tu as une meilleur solution
merci
|
|
mardi 4 août 2009 à 11:38:38 |
Re : probleme de siteMap et treeview crée dynamiquement

gabj
|
Bonjour,
Entre stocker des sitemaps par Session et appeler la meme procedure stockée, il faudrait voir quel est le plus optimisé !
Mais si tu passes par de l'identification ASP.Net je te conseillerai vivement d'utiliser les roles et de stocker tes sitemap par role dans le cache de ton application web (le cache te permet de partager tes sitemaps entre toutes les sessions et augmente les performances de ton application web). Du type:
Code C# :
private static string role = "role";
protected void Page_Load(object sender, EventArgs e)
{
SiteMap map;
if (User.IsInRole(role))
{
map = GetSiteMapByRole();
}
}
private static SiteMap GetSiteMapByRole()
{
return GetCacheSiteMap();
}
private static SiteMap GetCacheSiteMap()
{
if (HttpContext.Current.Cache[role] != null)
{
return (SiteMap)HttpContext.Current.Cache[role];
}
else
{
//Appel de ta Proc Stock par la méthode GetdbSiteMap() et tu mets ton résultat immédiatement en cache
return (SiteMap)HttpContext.Current.Cache[role] = GetdbSiteMap();
}
}
|
|
mardi 4 août 2009 à 12:55:45 |
Re : probleme de siteMap et treeview crée dynamiquement

kaygee
|
J'y ai déjà penser à stocker les sitemaps, mais le problème c'est que les combinaisons sont tellement nombreuses et diverses et en perpétuel changement.
Pour résumer le problème, je suis en train de faire passer des pages asp over-pourrie en asp.net en optimisant au maximum le code et les performances.
hors je ne peux pratiquement pas toucher à la db existante
avec une db du genre
id lien nom lienparent
le lienparent contient l'id du parent évidement pour permettre la création du sous-menu.
je dois donc cogité pour trouver LA meilleur solution sans devoir créer une liste de sitemaps.
j'y ai déjà perdu quelques neurones ;-)
|
|
mardi 4 août 2009 à 14:28:22 |
Re : probleme de siteMap et treeview crée dynamiquement

gabj
|
Re-bonjour,
Je pense que tu n'as pas bien compris ma réponse. Durant l'identification (je te conseille d'utiliser les authentifications ASP.Net), tu dois appliquer à chacun de tes utilisateurs un role sur ton application (tu peux avoir 1 à n utilisateur pour un role).
A partir de là tu peux gérer tes sitemaps par role(tu peux affecter les roles directement par l'attribut roles de chacun des siteMapNode de ton fichier avec l'extension .siteMap).
Si tu as des besoins plus spécifiques par utilisateur, tu peux également utiliser les profiles ASP.Net. Maintenant, je ne te cacherai pas que si tu as une application web avec authentification sans règle de sécurité par groupe d'utilisateur, je pense qu'il faudrait sans doute revoir la stratégie de sécurité du site.
Bon courage
Jérôme GABRIEL
MCTS ASP.Net
|
|
mercredi 5 août 2009 à 10:30:44 |
Re : probleme de siteMap et treeview crée dynamiquement

kaygee
|
malheureusement le problème est la, je ne peux pas utiliser l'authentification .net, comme je l'ai dis avant je dois utiliser ce qui se trouve à ma dispo sans modifier sinon je risque la lapidation sur la place publique.
Les roles et authorisation sont géré par une DLL, je recois en le role du client ainsi que des switch pour authorisé ou non certain menu.
C'est affreusement barbare mais ca a fait ses preuves et donc c'est du "touche pas a ca ptit con" ;-)
c'est un peu pour cela que j'ai trouvé ma méthode la plus efficace vu le contexte.
Pouvoir gérer des rôles vu les infos que je recois releve du défi.
|
|
Cette discussion est classée dans : menu, code, append, sitemap, navigatestring
Répondre à ce message
Sujets en rapport avec ce message
Comment utilise le "xmlhttprequest"? [ par pierrot10 ]
Bonjour dans mon code j'aurai un onclick="Menu(menu2);" ceci fera appeelle a une fonction: function Menu(m){ if (m==menu){ }else if(m==menu1){ <!--
Conexion à une BD sous JavaScript ! ! ! [ par richch ]
Bonjour, J'essaye de construire un menu pour mon site web et en fait je voudrais savoir s'il y a une possibilité d'insérer du
Menu web géré via Web.sitemap [ par carlos95 ]
Bonjour,J'essaie de mettre en place un menu se basant sur le fichier web.sitemap, mais visual studio 2005 détecte une erreur de syntaxe lorsque je sai
click non exécuté sur un sous un sous-menu [ par Cool_01 ]
Bonjour tout le monde,Je suis entrain de developper un site internet en utilisant ASP.NET avec C#.NETJ'ai un control Menu pour lequel je crée les Me
Developper une treeview [ par Skinou ]
Bonjour a tous, Je suis débutant en ASP.NET et là je suis en train de faire un petit site. J'ai fait un fichier web.sitemap pour gérer l'arborecence d
Inserer un bouton a partir du code behind [ par welwel86 ]
Bonjour,Je développe actuellement un site web en utilisant le langage C#, le menu du site est 100% dynamique. Je veux alors insérer les boutons du men
sitemapPath et menu [ par zoullou007 ]
Bonjour, voilà mon soucis: J'ai un fichier Web.sitemap qui défini l'architecture de mon site. A un endroit j'ai un noeud avec l'URL: ListeClient.aspx
Conseil sur les Sitemap [ par kaygee ]
Hello,Je voudrais quelques conseils sur l'utilisation des sitemap.En quelques mots, j'ai un site en 4 langues, le modèle est le meme pour toutes les p
menu+sitemap [ par pigeon11 ]
j'ai créé un menu et je lui appliqué un web.sitemapLe problème c'est que lors du clique sur un élément du menu la page indiquée sur l'url s'affiche ma
Dropdownlist modification design [ par ulmo22 ]
Bonjour je ne sais pas si je suis au bonne endroit. Mais j'ai un souci sous ASP , je débute tout juste dans dedans . Voila j'ai crée une Dropdownlist
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|