2014-09-26 74 views
0

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

@TimSchmetler我忘了翻译它 – zkanoca 2014-09-26 15:48:28

回答

1

您必须指定DataTextFieldDataValueField

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

否则.NET不知道你想要的字段,以显示和要用作钥匙。您也可以只使用其中一种,然后文本也是价值,反之亦然。但是,您不能省略它,否则使用object.ToString(),这是DataRowView的完整类型名称。