как отобразить список на datgridview - PullRequest
0 голосов
/ 16 сентября 2010
List A = new List();
A.Add("Apple");
A.Add("Banana");
A.Add("Pineapple");

dataGridView.DataSource = a;

Результат: длина каждого элемента в списке, а не самого элемента. 5 6 9 Как я могу сделать datagridView для отображения строки вместо длины.

Ответы [ 3 ]

2 голосов
/ 16 сентября 2010

Вы также можете сделать несколько фанк LINQ

List<string> A = new List<string>(); A.Add("Apple"); A.Add("Banana"); A.Add("Pineapple");
dataGridView.DataSource = (from a in A select new {Value = a}).ToList();

редактировать

Чтобы объяснить немного подробнее, проблема в том, что datagridview привязывается к свойству объекта по умолчанию (поэтому длина строки). В строке нет реального свойства (например, значения, например), чтобы вы могли установить DataMember. поэтому вы должны создать класс или в моем случае предоставить ему анонимный класс только с одним свойством (или несколькими свойствами и установить DataMember)

2 голосов
/ 16 сентября 2010

создать класс, Фрукт

class Fruit
{
    public string Name { get; set; }
}

и создайте общий список фруктов:

List<Fruit> fruits = new List<Fruit>();
fruits.Add(new Fruit() { Name = "Apple" });

dataGridView1.DataSource = fruits;
0 голосов
/ 28 марта 2012

Это потому, что DataGridView ищет свойства содержащихся объектов. Для строки есть только одно свойство - длина. Итак, вам нужна оболочка для такой строки

public class StringValue 
{ 
  public StringValue(string s) 
  { 
      Value = s; 
  } 
  public string Value { get { return _value; } set { _value = value; } } 
  string _value; 
}

Затем привяжите List<StringValue> object к вашей сетке. Просто альтернативный ответ

редактировать: непреднамеренная полная копия чьего-либо ответа в другой теме. Кажется, человек, который научил меня этому, просто скопировал ответ оттуда, а через несколько лет я вернул его, непреднамеренно и извинения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...