2009-07-09 21 views
7

Bir işlevden dönen bir IList<string>'um var (değişken lst olarak) ve ben ayarlıyorum ve sonra.NET/C# Bağlama IList <string> bir DataGridView için

this.dataGridView1.DataSource = lst; 

Datagrid, Uzunluk etiketli bir sütun ekler ve her dizenin uzunluğunu listeler. Sadece dizeleri listeleyebilir miyim?

+1

sizin ılist sadece Dizeler içeriyor mu yürütme formda'

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

Kod Örnek

ekleme

olur? veya başka bir tür içeriyor mu, ' '? – Nate

+0

ah ... o ben anonim türleri şey bu tür için mükemmeldir, arıyordu Tam olarak ne bir IList ... – Clyde

cevap

13

Gerçekten bir dize özelliği var nesnelerin listesini gerekir. .NET 3.5 ile aldatabildin:

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

Aksi bir kukla sınıf oluşturmak ve manuel veri kopyalamak ... DataGridViews nesnenin özelliklerini göstermek Bunun nedeni

+0

söyledi. –

+0

Ama listesini değiştirmek eğer DataGridView udpdate ETMEYECEKTIR değerleri ... – Pedro77

1

. Bu durumda Liste sadece bu nedenle sadece (bakılmaksızın DataType ait) "Uzunluk" görüntüleyebilir, "Uzunluk" tek özelliği vardır. Ne istediğini elde etmek için bir sarıcı sınıf oluşturmak gerekir ("Metin" bir özelliğe sahip bir "MyString" sınıfını, sonra ızgara görüntülenen bir listesi var).

Umut bu

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

     }