请让我知道我是否可以根据以下情况实现
因此,如果用户以 domain/dan.campbell 身份登录,那么我需要对 RadTreeView 进行排序,如下所示:
坎贝尔,丹
- 耐克
- 彪马
安斯顿,埃里克
- 阿迪达斯
- 彪马
布莱恩,埃里克
- 阿迪达斯
- 彪马
基于以下代码,当前树显示如下:
安斯顿,埃里克
- 阿迪达斯
- 彪马
布莱恩,埃里克
- 阿迪达斯
- 彪马
坎贝尔,丹
- 耐克
彪马
protected void Page_Load(object sender, EventArgs e) { BuildTree(); 排序类();}
//Sort all RadTreeNode in Ascending public void SortClass() { SortNodes(treProduct.Nodes); }
公共无效 BuildTree() { EntityCollection 集合 = GetProduct(); treProduct.Nodes.Clear();
ArrayList pgnodes = new ArrayList(); RadTreeNode pnode = null; RadTreeNode snode = null; foreach (ProductEntity p in collection) { pnode = null; foreach(RadTreeNode n in pgnodes) { if(n.Text.Trim() == p.LastName.Trim().ToUpper() + "," +" " + p.FirstName.Trim().ToUpper()) { pnode = n; break; } } if(pnode != null) { RadTreeNode productNode = new RadTreeNode(p.ProductName.toString()); pnode.nodes.Add(productNode); } else { RadTreeNode userNode = new RadTreeNode(p.LastName.Trim().ToUpper() + "," +" " + p.FirstName.Trim().ToUpper()); RadTreeNode productNode = new RadTreeNode(p.ProductName.toString()); userNode.Nodes.Add(productNode); pgnodes.Add(userNode); } } foreach(RadTreeNode pg in pgnodes) { treProduct.Nodes.Add(pg); } treProduct.CollapseAllNode(); } /// <summary> /// The sort node is called for each node level sorting the child node /// </summary> /// <param name="collection"></param> public void Sort(RadTreeNodeCollection collection) { RadTreeNode[] nodes = new RadTreeNode[collection.Count]; collection.CopyTo(nodes, 0); Array.Sort(nodes, new NodeSorter()); collection.Clear(); collection.AddRange(nodes); } /// <summary> /// SortNodes is a recursive method enumarating and sorting all area /// </summary> /// <param name="collection"></param> private void SortNodes(RadTreeNodeCollection collection) { Sort(collection); foreach (RadTreeNode node in collection) { if (node.Nodes.Count > 0) { SortNodes(node.Nodes); } } } /// <summary> /// TreeNodeCOmpare define the sorting criteria /// </summary> public class NodeSorter : IComparer { public int Compare(object x, object y) { RadTreeNode tx = (RadTreeNode)x; RadTreeNode ty = (RadTreeNode)y; //if (tx.Text.Length != ty.Text.Length) // return tx.Text.Length - ty.Text.Length; return string.Compare(tx.Text, ty.Text); } }