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

本文关键字:添加 下拉列表 列表 文件夹 | 更新日期: 2023-09-27 18:24:43

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

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

您必须指定DataTextFieldDataValueField:

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

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