I have System.Web.SiteMapProvider and I get all tree (nodes) using providerSiteMap.RootNode.ChildNodes
For childnodes from RootNode, I want move the last node to the top (as first item).
ChildNodes: N1, N2, ... N9, N10
I want move last node N10:
ChildNodes: N10, N1, N2, ...N9
I try this:
var providerSiteMap = GetProviderSiteMap(sRoles);
var dSource = new SiteMapDataSource { Provider = providerSiteMap };
var nodeList = providerSiteMap.GetChildNodes(providerSiteMap.RootNode);
var listaNodos = new List<SiteMapNode>();
var item = providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>().FirstOrDefault(x => x.Key == "9100");
providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>().ToList().Remove(item);
providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>().ToList().Insert(0, item);
dSource.DataBind();
//enlazamos
TreeView1.DataSource = dSource;
TreeView1.DataBind();
and I try:
var item = providerSiteMap.RootNode.ChildNodes.Cast().FirstOrDefault(x => x.Key == "9100");
var t = providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>().ToList().Count;
providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>().ToList().Remove(item);
t = providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>().ToList().Count;
providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>().ToList().Insert(0, item);
ToList().Count is the same before and after Remove(item)
and I try:
var item = providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>().FirstOrDefault(x => x.Key == "9100");
var t = providerSiteMap.RootNode.ChildNodes.Count;
providerSiteMap.RootNode.ChildNodes.Remove(item);
t = providerSiteMap.RootNode.ChildNodes.Count;
providerSiteMap.RootNode.ChildNodes.Insert(0, item);
t = providerSiteMap.RootNode.ChildNodes.Count;
and I get Collection is read-only error when I try execute providerSiteMap.RootNode.ChildNodes.Remove(item);
Any suggestions?
I try this: