2014-11-16 95 views
0

我目前在一個目錄中使用此代碼填充一個下拉列表中的所有文件的內容:填充一個2維列表從Directory.GetFiles

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的文件名從2維List加載下拉列表。

我的問題是我無法從Directory.GetFiles加載2維列表。有人可以發表一個例子嗎? 另外,如何特別處理列表中的每個維度以加載下拉列表的值/文本屬性?

非常感謝您的幫助!

回答

0

我不認爲你需要這裏的多維數組..你可以分開「價值」和「文本」。也就是說,數據綁定支持值和文本,使用「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")); 
} 
+0

這部分正是我一直在尋找:。選擇(PATH =>新 { Path = path, Name = Path.GetFileName(path) })。ToArray();謝謝 ! – pmcs