Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Refresh pagina

  1. #1

    Refresh pagina

    Buongiorno a tutti.

    Ho un treeview e un datalist che se clicco sul datalist mi espande i nodi del treeview e mi seleziona il prodotto e viceversa avviene con il treeview.

    Il problema è che se io ho cliccato su uno dei due e dopo faccio refresh della pagina non rimane memorizzata la selezione.

    Questo è il codice che ho scritto:

    codice:
    public void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
            {
                int riferimento = Convert.ToInt32(TreeView1.SelectedNode.Value);
                int numpro = GetProdottoFromCatalogo(riferimento);
    
                if (numpro > 0)
                {
                    DataCaches.BigData.prodotti.SetProdotto(numpro, DataCaches.ProdottoReader);
                }
    
                new ProdottiRecentiDataAccess().AddProdotto(this.User.Identity.Name, numpro, riferimento);
                SelectItem(riferimento);
    
                string node = TreeView1.SelectedNode.Value;
    
                ProdRecenti.DataKeyField = "Key";
                ProdRecenti.DataMember = "Value";
                ProdRecenti.DataSource = GetProdottiDataSource();
                ProdRecenti.DataBind();
    
                if ((numpro > 0) && (node != null))
                {
                    ProdRecenti.SelectedIndex = getIndexFromValue(numpro.ToString() + ":" + node);
                }
            }
    e questo il datalist:

    codice:
     public void ProdRecenti_Click(object sender, EventArgs e)
            {
                LinkButton b = sender as LinkButton;
    
                string[] parts = b.CommandArgument.Split("/".ToCharArray());
                string indexStr = parts[0];
                string key = parts[1];
    
                ProdRecenti.SelectedIndex = Convert.ToInt32(indexStr);
                KeyValuePair<int, int> kvp = UnpackProdottoKey(key);
                DataCaches.BigData.prodotti.SetProdotto(kvp.Key, DataCaches.ProdottoReader);
                new ProdottiRecentiDataAccess().AddProdotto(this.User.Identity.Name, kvp.Key, kvp.Value);
    
                // cerco l'elemento del catalogo!
                string catpath = "";
                ICatalogo cat = DataCaches.CatalogoReader.read(41);
                ElementoCatalogo el = cat[kvp.Value];
                while (el != null)
                {
                    if (catpath.Length != 0)
                        catpath = "/" + catpath;
                    catpath = el.Riferimento.ToString() + catpath;
    
                    el = cat.GetParent(el);
                }
    
                foreach (TreeNode n in TreeView1.Nodes)
                    Unselect(n);
    
                if (catpath.Length > 0)
                {
                    TreeNode n = TreeView1.FindNode(catpath);
    
                    if (n != null)
                    {
                        n.Selected = true;
                        for (n = n.Parent; n != null; n = n.Parent)
                            n.Expand();
                    }
                }
            }

  2. #2
    La mia idea è di prendere queste parti di codice e farci due funzioni da richiamare nel OnPrerender

    codice:
       string node = TreeView1.SelectedNode.Value;
    
                ProdRecenti.DataKeyField = "Key";
                ProdRecenti.DataMember = "Value";
                ProdRecenti.DataSource = GetProdottiDataSource();
                ProdRecenti.DataBind();
    
                if ((numpro > 0) && (node != null))
                {
                    ProdRecenti.SelectedIndex = getIndexFromValue(numpro.ToString() + ":" + node);
                }
    codice:
    // cerco l'elemento del catalogo!
                string catpath = "";
                ICatalogo cat = DataCaches.CatalogoReader.read(41);
                ElementoCatalogo el = cat[kvp.Value];
                while (el != null)
                {
                    if (catpath.Length != 0)
                        catpath = "/" + catpath;
                    catpath = el.Riferimento.ToString() + catpath;
    
                    el = cat.GetParent(el);
                }
    
                foreach (TreeNode n in TreeView1.Nodes)
                    Unselect(n);
    
                if (catpath.Length > 0)
                {
                    TreeNode n = TreeView1.FindNode(catpath);
    
                    if (n != null)
                    {
                        n.Selected = true;
                        for (n = n.Parent; n != null; n = n.Parent)
                            n.Expand();
                    }
                }
    E' possibile fare una cosa di questo tipo?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.