簡體   English   中英

如何在下拉列表中顯示文件夾名稱和所有子文件夾名稱

[英]How to display folder name and all sub folder name in dropdownlist

我有代碼來查找和顯示root文件夾中所有文件夾的名稱:

private string[] GetFolderNames(string virtualDirPath)
{
    string[] Directories;
    if (Directory.Exists(virtualDirPath))
    {
        Directories = Directory.GetDirectories(virtualDirPath);
        for (int i = 0; i < Directories.Length; i++)
        {
            Directories[i] = MapUrl(Directories[i]);//map path to the folder
        }
        return Directories;
    }
    else
    {
        return null;
    }
}

然后代碼將數據綁定到Dropdownlist:

string[] folders = GetFolderNames(RootPath);
if (folders != null)
{
     dropDownListFolders.DataSource = folders;
     dropDownListFolders.DataBind();
}
else
{
     dropDownListFolders.Items.Insert(0, "No folders available..");
}

如上代碼所示,Dropdownlist在Rootfolder顯示所有文件夾名稱,其中path = virtualDirPath ;

但是我想知道在每個子文件夾中是否仍然有一些子文件夾,並且在每個子文件夾中還有更多的子文件夾,等等等等,那么我如何獲得該子文件夾的所有名稱。

嘗試在第一個循環中添加更多for循環,但這確實使我感到困惑。 看來這不是好方法。

我需要Dropdownlist在rootfolder中顯示所有子文件夾名稱,sudfolder的子代和child文件夾的子代...。 救命! 我需要您的意見以找到一種更好的方法。

List<string> dirList = new List<string>();

DirectoryInfo[] dir = new DirectoryInfo(@"D:\Path").GetDirectories("*.*", SearchOption.AllDirectories);
foreach(DirectoryInfo d in dir) 
{
    dirList.Add(d.Name);
}

for (int i = 0; i < dirList.Count; i++) 
{
    Console.WriteLine(dirList[i]);
}

嘗試此操作,並在dirList獲取所有文件夾名稱,並將其添加到下拉列表中。

如果使用inbuild Directory.EnumerateDirectories方法,則更容易。 http://msdn.microsoft.com/de-de/library/vstudio/dd383462(v=vs.110).aspx

您可以這樣稱呼它:

Directory.EnumerateDirectories("rootpath", "*", SearchOption.AllDirectories);

這將為您提供所有目錄(“ *”)的IEnumerable及其完整路徑。 枚舉SearchOption.AllDirectories表示您希望搜索是遞歸的。 根路徑是您的起點。

另外,您可以通過擴展第二個參數來過濾此方法,如下所示:

Directory.EnumerateDirectories("rootpath", "test*", SearchOption.AllDirectories);

這將導致以test(“ test *”)開頭的所有目錄的IEnumerable

編輯:

您應該考慮顯示相對路徑,而不是僅顯示可能導致重復的列表條目的名稱。

var directories = (from x in Directory.EnumerateDirectories("rootpath", "*", SearchOption.AllDirectories)
                    select x.SubString("rootpath".Length)).ToList();

使用以下方法獲取所有文件夾的列表:

 public void traverse(File file, List<String> dirList) {
    // Print the name of the entry
    System.out.println(file);


    // Check if it is a directory
    if (file.isDirectory()) {
        System.out.println(file);
        //add directory name in the list
        dirList.add(file.getName());
        // Get a list of all the entries in the directory
        String entries[] = file.list();

        // Ensure that the list is not null
        if (entries != null) {
            // Loop over all the entries
            for (String entry : entries) {
                // Recursive call to traverse
                traverse(new File(file, entry),dirList);
            }
        }
    }
}

一旦獲得目錄和子目錄的列表,便用下拉列表將其綁定。 使用以下代碼調用此方法

 DirectoryList directoryList = new DirectoryList();

    //output pram
    ArrayList<String> dirList = new ArrayList<String>();

    directoryList.traverse(new File("D:\\Workspace\\Netbeans\\addapp"), dirList);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM