|M| 我写了一个读取网站文件夹的事型代码,但样让文件夹按名字排呢
void BindDir(DirectoryInfo dir, TreeNode node)
{
DirectoryInfo[] subdir = dir.GetDirectories();
for (Int32 i = 0; i <= subdir.Length - 1; i++)
{
TreeNode childnode = new TreeNode();
childnode.Text = subdir[i].Name;
childnode.Value = subdir[i].FullName;
node.ChildNodes.Add(childnode);
BindDir(subdir[i], childnode);
}
FileInfo[] file = dir.GetFiles();
for (Int32 j = 0; j <= file.Length - 1; j++)
{
TreeNode childnode = new TreeNode();
childnode.Text = file[j].Name;
childnode.Value = file[j].FullName;
node.ChildNodes.Add(childnode);
}
}
这样得出来的会变成
2007
02
03
01
而我想要的是
2007
01
02
03
----------------------------------
上面代码要怎么改
谢谢
[解决办法]
土方法就是把全部数据填入List里面排序一下再出来循环
[解决办法]
for (Int32 j = file.Length - 1; j > =0; j--)
{
TreeNode childnode = new TreeNode();
childnode.Text = file[j].Name;
childnode.Value = file[j].FullName;
node.ChildNodes.Add(childnode);
}
就OK了
[解决办法]
看错了 上页的不行 我再写
[解决办法]
mark
[解决办法]
这样是排序,再依次添加到树上就行了。当然也可以用List或ArrayList,只是觉得那样数据格式要转换来转换去,效率不高
TreeNode tempNode=new TreeNode();
TreeNodeCollection tnc=new TreeNodeCollection();
//tnc在此初使化 填充数据
ArrayList tempList=new ArrayList(8);
int maxPos=0;
for (int i=0;i <tnc.Count;i++)
{
for (int j=i;j <tnc.Count;j++)
{
if (tnc[maxPos].Text <tnc[j].Text)
{
maxPos=j;
}
}
if(i!=maxPos)
{
tempNode=tnc[i];
tnc[i]=tnc[maxPos];
tnc[maxPos]=tempNode;
}
}
[解决办法]
mark
[解决办法]
添加之前先排序..
[解决办法]
晕....WO_YOU_XIE_SHANG_XIN() 回答的挺快呀...
就是他的思路 先把文件夹下的文件夹名字 存到 ArrayList数组中
然后用sort()方法排序 再for ArrayList数组 添加节点
ArrayList aList = new ArrayList();
aList.add( "d ");
aList.add( "a ");
aList.add( "b ");
aList.add( "c ");
aList.add( "e ");
aList.sort();// 排序
System.out.println(aList);
结果
a
b
c
d
e
[解决办法]
List排序
[解决办法]
循环加就是了
[解决办法]
支持,lanymy(蓝言觅ぷ雨)
[解决办法]
void BindDir(DirectoryInfo dir, TreeNode node)
{
DirectoryInfo[] subdir = dir.GetDirectories();
Array.Sort(subdir); // here
for (Int32 i = 0; i <= subdir.Length - 1; i++)
{
TreeNode childnode = new TreeNode();
childnode.Text = subdir[i].Name;
childnode.Value = subdir[i].FullName;
node.ChildNodes.Add(childnode);
BindDir(subdir[i], childnode);
}
FileInfo[] file = dir.GetFiles();
Array.Sort(file); // here
for (Int32 j = 0; j <= file.Length - 1; j++)
{
TreeNode childnode = new TreeNode();
childnode.Text = file[j].Name;
childnode.Value = file[j].FullName;
node.ChildNodes.Add(childnode);
}
}
[解决办法]
假如默认排序不是你想要的,可能【 倒序 】了,
那么,你可以显示提供 Comparer 调用重载方法
Array.Sort (
Array array,
IComparer comparer
)
[解决办法]
jf up 学习