Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将文件夹列表添加到下拉列表_C#_Asp.net_File Io - Fatal编程技术网

C# 将文件夹列表添加到下拉列表

C# 将文件夹列表添加到下拉列表,c#,asp.net,file-io,C#,Asp.net,File Io,当我调用以下方法作为dropdownlist的数据源时,我得到的是System.Data.DataRowView,而不是文件夹名称。我哪里做错了 public DataTable listFolders() { DataTable dt = new DataTable(); dt.Columns.Add("name", typeof(string)); dt.Columns.Add("fullname", typeof(string)); string defa

当我调用以下方法作为dropdownlist的数据源时,我得到的是System.Data.DataRowView,而不是文件夹名称。我哪里做错了

public DataTable listFolders()
{
    DataTable dt = new DataTable();
    dt.Columns.Add("name", typeof(string));
    dt.Columns.Add("fullname", typeof(string));

    string defaultPath = Server.MapPath(ConfigurationManager.AppSettings["defaultPath"].ToString());

    foreach (var dir in new DirectoryInfo(defaultPath).GetDirectories("*", SearchOption.TopDirectoryOnly))
    {
        dr = dt.NewRow();
        dr["name"] = dir.Name;
        dr["fullname"] = dir.FullName;
        dt.Rows.Add(dr);
    }
    return dt; 
}
我的方法调用

ddl.DataSource = listFolders();
ddl.DataBind();
您必须指定和:


否则.NET不知道要显示哪个字段以及要将哪个字段用作键。您也可以只使用两者中的一个,那么文本也是值,反之亦然。但是您不能忽略它,否则将使用
object.ToString()
,这是
DataRowView

@TimSchmetler的完整类型名。我忘了翻译它
ddl.DataSource = listFolders();
ddl.DataTextField  = "name";     // or fullname
ddl.DataValueField = "fullname"; // or name
ddl.DataBind();