我有System.Web.SiteMapProvider
,我使用providerSiteMap.RootNode.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();
我试试:
var item = providerSiteMap.RootNode.ChildNodes.Cast()。FirstOrDefault(x =&gt; x.Key ==&#34; 9100&#34;);
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 :(得分: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);