.NET / C# Связывание IList<string> с DataGridView
У меня есть IList<string>
возвращаясь из функции (как переменная lst), и я устанавливаю, а затем я
this.dataGridView1.DataSource = lst;
Сетка данных добавляет один столбец, помеченный как Длина, и затем перечисляет длину каждой строки. Как мне сделать это просто перечислить строки?
2 ответа
Вам действительно нужен список объектов, которые имеют строковое свойство. С.NET 3.5 вы можете обмануть:
.DataSource = list.Select(x=>new {Value = x}).ToList();
В противном случае создайте фиктивный класс и скопируйте данные вручную...
Это связано с тем, что DataGridViews показывают свойства объекта. В этом случае список имеет только одно свойство "Длина", поэтому он может отображать только "Длина" (независимо от типа данных). Вам нужно создать класс-оболочку, чтобы достичь того, что вы хотите (класс "MyString" со свойством "Text", а затем список в вашей сетке).
Надеюсь это поможет
Пример добавления кода
class MyString
{
private string _text;
public string Text
{ get
{
return _text;
}
set
{
_text = value;
}
}
}
"В исполнительной форме
private List<MyString> foo()
{
List<MyString> lst = new List<MyString>();
MyString one = new MyString();
MyString two = new MyString();
one.Text = "Hello";
two.Text = "Goodbye";
lst.Add(one);
lst.Add(two);
return lst;
}
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.DataSource = foo();
}