2015-09-18 2 views
0

System.Web.SiteMapProvider У меня есть, и я получаю все дерево (узлов) с помощью providerSiteMap.RootNode.ChildNodesПеремещение SiteMapNode в начало списка

Для ChildNodes из RootNode, я хочу переместить последний узел в верхней части (в качестве первого пункта).

ChildNodes: N1, N2, ... N9, N10 

Я хочу, чтобы переместить последний узел N10:

ChildNodes: N10, N1, N2, ...N9 

Я стараюсь это:

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

и я стараюсь:

пункт переменная = 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 то же самое до и после Remove(item)

и я стараюсь:

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; 

и я получаю Коллекция только для чтения об ошибке при попытке выполнить providerSiteMap.RootNode.ChildNodes.Remove(item);

Любые предложения?

ответ

0

Я стараюсь это:

 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"); 

     List<SiteMapNode> children2 = new List<SiteMapNode>(providerSiteMap.RootNode.ChildNodes.Cast<SiteMapNode>()); 

     var t = children2.Count; 
     children2.Remove(item); 
     t = children2.Count; 
     children2.Insert(0, item); 
     t = children2.Count; 

     var nodesChildren = new SiteMapNodeCollection(children2.ToArray()); 
     providerSiteMap.RootNode.ChildNodes = nodesChildren; 

     // refresh ?? 
     providerSiteMap.GetChildNodes(providerSiteMap.RootNode); 
Смежные вопросы