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

时间:2014-09-26 15:43:38

标签: c# asp.net file-io

当我将以下方法作为下拉列表的数据源调用时,我得到 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();

1 个答案:

答案 0 :(得分:1)

您必须指定DataTextFieldDataValueField

ddl.DataSource = listFolders();
ddl.DataTextField  = "name";     // or fullname
ddl.DataValueField = "fullname"; // or name
ddl.DataBind();

否则.NET不知道您要显示哪个字段以及要将其用作键。您也可以只使用其中之一,然后文本也是值,反之亦然。但是你不能省略它,否则使用object.ToString(),这是DataRowView的全类型名称。