2014-09-26 3 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

ответ

1

Вы должны указать DataTextField и DataValueField:

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

В противном случае .NET не знает, какое поле вы хотите показать, и которые вы хотите использовать в качестве ключа. Вы также можете использовать только один из них, тогда текст также является значением и наоборот. Но вы не можете его пропустить, иначе используется object.ToString(), который является полным-типом в случае DataRowView.

Смежные вопросы