【问题标题】:Populate a 2 dimensional List From Directory.GetFiles从 Directory.GetFiles 填充二维列表
【发布时间】:2023-03-21 00:06:01
【问题描述】:

我目前正在使用以下代码在一个下拉列表中填充目录中所有文件的内容:

 string[] filePaths = Directory.GetFiles(@ConfigurationManager.AppSettings["File_Path"]
 .ToString(), "*.txt");

            if (filePaths == null || filePaths.Length == 0)
            {
                ddlFiles.Items.Insert(0, new ListItem("NO TEXT FILES CURRENTLY AVAILABLE !"));
            }
            else
            {
                ddlFiles.DataSource = filePaths;
                ddlFiles.DataBind();
                ddlFiles.Items.Insert(0, new ListItem("PLEASE SELECT A TEXT FILE"));
            }

问题是下拉菜单会显示文件的完整路径。我只想显示文件名和扩展名。我认为我可以使用二维列表,并将路径加载到一维中。然后我可以遍历该维度并解析最后一个“\”之后的所有内容以获取文件名并将其写回该列表中的另一个维度。这将产生一个具有两个维度的列表,一个带有路径,一个带有文件名。然后,我可以使用 DataValueField 的路径和 DataTextField 的文件名从二维列表中加载下拉列表。

我的问题是我无法从 Directory.GetFiles 加载二维列表。有人可以发布一个例子吗? 另外,如何专门处理List中的每个维度来加载下拉列表的Value/Text属性?

提前感谢您的帮助!

【问题讨论】:

    标签: multidimensional-array getfiles


    【解决方案1】:

    我认为您在这里不需要多维数组。您可以将“值”和“文本”分开。也就是说,数据绑定支持值和文本,使用“DataValueField”和“DataTextField”,你可以只使用它们。意味着,首先你得到一个对列表,然后将它们绑定到项目的值/文本,如下所示:

    var filePaths = Directory.GetFiles(@ConfigurationManager.AppSettings["File_Path"].ToString(), "*.txt")
        .Select(path => new
        {
            Path = path, 
            Name = Path.GetFileName(path)
        }).ToArray();
    
    if (filePaths == null || filePaths.Length == 0)
    {
        ddlFiles.Items.Insert(0, new ListItem("NO TEXT FILES CURRENTLY AVAILABLE !"));
    }
    else
    {
        ddlFiles.DataSource = filePaths;
        ddlFiles.DataValueField = "Path";
        ddlFiles.DataTextField = "Name";
        ddlFiles.DataBind();
        ddlFiles.Items.Insert(0, new ListItem("PLEASE SELECT A TEXT FILE"));
    }
    

    【讨论】:

    • 这部分正是我要找的: .Select(path => new { Path = path, Name = Path.GetFileName(path) }).ToArray();谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 2021-03-11
    • 2016-05-27
    • 2020-08-02
    • 2019-01-14
    • 1970-01-01
    相关资源
    最近更新 更多