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