107 messaggi dal 10 settembre 2007
www.mystarlive.com
Salve,
ho un sito con un catalogo con delle pagine dinamiche.
Ogni prodotto appartiene ad una sotto-categoria e ad una categoria.

purtroppo non posso mappare i prodotti nel file web.sitemap, dove sono gia' mappati le categorie e le sotto categorie.

quando clicco su un prodotto il percorso (home > categoria > sottocategoria) ovviamente sparice poichè non è mappato nel web.sitemap.
come ovviare a tutto ciò?

W la Foca e che Dio la benedoca
Ciao !
Devi crearti un Site Map Data Provider custom.
Leggiti questo:

http://www.peppedotnet.it/Articoli/CustomSiteMapProvider.aspx

Marchi Giuseppe
http://www.peppedotnet.it
107 messaggi dal 10 settembre 2007
www.mystarlive.com
Testo Subito... Grazie!!

W la Foca e che Dio la benedoca
107 messaggi dal 10 settembre 2007
www.mystarlive.com
ciao PeppeDotNet,
Il tuo codice quasi quasi mi funziona, dico quasi quasi perchè il sitemapPath mi funziona fino al 2° livello. non riesco a trovare il problema.
Sai quale potrebbe essere il motivo? oppure hai qualche link da suggerirmi?

Ecco il codice che ho modificato rispetto alla tua soluzione:

SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
SiteMapNode childNode = new SiteMapNode(this,
reader["IDCategoria"].ToString(),
this.rootNode.Url + "" + reader["IDCategoria"].ToString()+ "/"+reader["Categoria"].ToString()+".aspx",
reader["Categoria"].ToString(),
reader["Categoria"].ToString());
//Adds child node to root node

AddNode(childNode, this.rootNode);

SqlConnection con2 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnessioneUnica"].ConnectionString);
con2.Open();
SqlCommand sottocat = new SqlCommand("SELECT IDSottoCategoria, NomeSottoCategoria FROM sottocategoria WHERE IDCategoria = " + reader["IDCategoria"], con2);
SqlDataReader readerCat = sottocat.ExecuteReader();

if (readerCat.HasRows)
{
while (readerCat.Read())
{
SiteMapNode childNodeCat = new SiteMapNode(this,
readerCat["IDSottoCategoria"].ToString(),
this.rootNode.Url + readerCat["IDSottoCategoria"].ToString() + "/" + readerCat["NomeSottoCategoria"].ToString() + ".aspx",
readerCat["NomeSottoCategoria"].ToString(),
readerCat["NomeSottoCategoria"].ToString());
//Adds child node to root node

AddNode(childNodeCat, childNode);

SqlConnection con3 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnessioneUnica"].ConnectionString);
con3.Open();
SqlCommand prodotti = new SqlCommand("SELECT IDProdotto, NomeProdotto FROM prodotti WHERE IDSottoCategoria = " + readerCat["IDSottoCategoria"], con3);
SqlDataReader readerProdotti = prodotti.ExecuteReader();

if (readerProdotti.HasRows)
{

while (readerProdotti.Read())
{
SiteMapNode childNodeProd = new SiteMapNode(this,
readerProdotti["IDProdotto"].ToString(),
this.rootNode.Url + readerProdotti["IDProdotto"].ToString() + "/" + readerProdotti["NomeProdotto"].ToString() + ".aspx",
readerProdotti["NomeProdotto"].ToString(),
readerProdotti["NomeProdotto"].ToString());

AddNode(childNodeProd, childNodeCat);


}
con3.Close();
readerProdotti.Close();
readerProdotti.Dispose();....etc.


Grazie.

W la Foca e che Dio la benedoca
eh.. per farlo andare fino a n sotto-livelli devi scrivere una funzione che in ricorsione crea i nodi uno sotto l'altro, portandoti dietro ogni volta il nodo padre in cui inserire i vari figli.

una cosa del genere

private void Ricorsione(SiteMapNode padre, string idCategoriaPadre)
{
   //esegui la select con categoria = idCategoriaPadre
   //Crei un nuovo SiteMapNode per ogni record che leggi da questa select
   
   AddNode(padre, NUOVONODO);
   Ricorsione(NUOVONODO, NUOVACATEGORIAPADRE);
}

Marchi Giuseppe
http://www.peppedotnet.it
107 messaggi dal 10 settembre 2007
www.mystarlive.com
scusami...
quindi niente cicli while uno dentro l'altro?

W la Foca e che Dio la benedoca
esatto..
la ricorsione serve proprio per popolare gerarchie ad albero

Marchi Giuseppe
http://www.peppedotnet.it
107 messaggi dal 10 settembre 2007
www.mystarlive.com
credo di non aver capito come funziona,
hai percaso un esempio da passarmi?
oppure qualche link?

Grazie...

W la Foca e che Dio la benedoca

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.