私は持っていて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 => 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;
実行しようとするとCollection is read-onlyエラーが発生しますproviderSiteMap.RootNode.ChildNodes.Remove(item);
助言がありますか?