我目前正在使用以下代码填充下拉列表,其中包含目录中所有文件的内容:
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"));
}
问题是下拉列表将显示文件的完整路径。我只是想显示文件名和扩展名。我想我可以使用二维List,并将路径加载到一个维度。然后,我可以循环遍历该维度并解析最后一个" \"获取文件名并将其写回该列表中的其他维度。这将导致List具有两个维度,一个包含路径,另一个包含文件名。然后,我可以使用DataValueField的路径和DataTextField的文件名从2维List中加载下拉列表。
我的问题是我无法从Directory.GetFiles加载2维列表。有人可以发一个例子吗? 另外,如何专门处理列表中的每个维度以加载下拉列表的值/文本属性?
提前感谢您的帮助!
答案 0 :(得分:0)
我认为你不需要多维数组。你可以分开"价值"和"文字"。也就是说,数据绑定支持值和文本,使用" DataValueField"和#34; 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"));
}