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();
                }
            }
        }