将IList<string>绑定到DataGridView的.NET/C#绑定

7

我有一个从函数返回的 IList<string>(变量名为lst),我进行了设置,然后我

this.dataGridView1.DataSource = lst;

数据网格添加了一个名为“长度”的列,然后列出了每个字符串的长度。如何使它只列出字符串?

1
你的IList只包含字符串吗?还是它包含其他类型,如 <T> - Nate
嗯...他说这是一个IList<string>... - Clyde
2个回答

14

你真正需要的是一个包含字符串属性的对象列表。使用.NET 3.5,你可以把它变成简单的操作:

.DataSource = list.Select(x=>new {Value = x}).ToList();
否则,创建一个虚拟类并手动复制数据...

正是我所需要的,匿名类型非常适合这种情况。 - Maurice Flanagan

2
这是因为DataGridView显示对象属性。在这种情况下,列表只有一个“Length”属性,因此它只能显示“Lenght”(无论DataType如何)。 你需要创建一个包装类来实现你想要的效果(一个具有“Text”属性的“MyString”类,然后在网格中显示一个列表)。
希望这可以帮助你。
添加代码示例:
 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();

        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接