.NET / C # привязка IList <string>к DataGridView - PullRequest
7 голосов
/ 09 июля 2009

У меня есть IList<string>, возвращаемое из функции (как переменная lst), и я устанавливаю, а затем я

this.dataGridView1.DataSource = lst;

Сетка данных добавляет один столбец, помеченный как Длина, и затем перечисляет длину каждой строки. Как мне сделать это просто перечислить строки?

Ответы [ 2 ]

13 голосов
/ 09 июля 2009

Вам действительно нужен список объектов, которые имеют строковое свойство. С .NET 3.5 вы можете обмануть:

.DataSource = list.Select(x=>new {Value = x}).ToList();

В противном случае создайте фиктивный класс и скопируйте данные вручную ...

2 голосов
/ 09 июля 2009

Это потому, что 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();

        }
...