.NET / C# Binding IList<string> to a DataGridView

本小妞迷上赌 提交于 2019-12-19 07:10:15

问题


I have an IList<string> returning from a function (as variable lst) and I set and then I

this.dataGridView1.DataSource = lst;

The datagrid adds one column labelled Length and then lists the length of each string. How do I make it just list the strings?


回答1:


You really need a list of objects that have a string property. With .NET 3.5 you could cheat:

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

Otherwise create a dummy class and copy the data in manually...




回答2:


This is because DataGridViews show properties of the object. In this case the List only has one property "Length", therefore it can only display "Lenght" (regardless of DataType). You need to create a wrapper class to achieve what you want (a "MyString" class with a property of "Text", then have a List displayed in your grid).

Hope this helps

Adding Code Example

 class MyString
    {
        private string _text;
        public string Text
        { get 
             { 
              return _text; 
             }
            set 
            {
                _text = value; 
            }
        }

    }

'In the executing form

 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();

        }


来源:https://stackoverflow.com/questions/1104341/net-c-sharp-binding-iliststring-to-a-datagridview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!