日期:2014-05-17  浏览次数:21291 次

100分:treeview中同级节点排序问题??
我现在有一个treeview的树形结构,假如他有name列,order列
例如:
  Name Order
|root0  
  |a 1
  |b 2
  |c 3
  |d 1
  |e 2
  |f 3 
  |g 1
  |h 2
  |e 3 就是按照这样排序,还请高手指教??

------解决方案--------------------
先在内存排序,再添加节点到TreeView
------解决方案--------------------

private void Form1_Load(object sender, EventArgs e)
{
SortTree(treeView1.Nodes);
}

public void SortTree(TreeNodeCollection p_Node)
{
SortComparer _NodeSort = new SortComparer();
TreeNode[] _Node = new TreeNode[p_Node.Count];
for (int i = 0; i != p_Node.Count; i++)
{
_Node[i] = p_Node[i];
SortTree(_Node[i].Nodes);

Array.Sort(_Node, _NodeSort);
p_Node.Clear();
for (int i = 0; i != _Node.Length; i++)
{
p_Node.Add(_Node[i]);
}
}

public class SortComparer : IComparer
{
int IComparer.Compare(Object x, Object y)
{
TreeNode _XNode = (TreeNode)x;
TreeNode _YNode = (TreeNode)y;
//这里取你的 Order 进行比较排序
return string.Compare(_XNode.Name, _YNode.Name);
}
}

------解决方案--------------------
6楼的不错
楼主也可以在绑定前先排序好。
------解决方案--------------------
不错,绑定前先排序
------解决方案--------------------
使用绑定方法的话,可以对绑定源进行排序的……排完序后对树进行一次刷新就完了。
------解决方案--------------------
支持6楼