.NET / C# Binding IList to a DataGridView

前端 未结 2 1680
悲&欢浪女
悲&欢浪女 2021-01-12 08:40

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

this.dataGridView1.DataSource = lst;


        
相关标签:
2条回答
  • 2021-01-12 09:14

    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();
    
            }
    
    0 讨论(0)
  • 2021-01-12 09:26

    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...

    0 讨论(0)
提交回复
热议问题