2012-12-19 28 views
0

我想編寫看起來像這樣的代碼:在DataGridView可以允許用戶排序​​時的AutoGenerateColumns是真的

IEnumerable<SomeModel> items = GetTheItems(); 

dataGridView1.AutoGenerateColumns = true; 
dataGridView1.DataSource = BuildTheDataSource(items); 

而且在數據網格將顯示在標題排序字形,並允許用戶進行排序通過點擊它們。

我迄今爲止最有希望的領導是SortableBindingList建議by this answer,但該解決方案(和其他)似乎只適用於手動創建的列。

更新

好蛋是我的臉吧! SortableBindingList確實有效,但我做了一個經典失誤:

void Bind(List<Model> items) 
{ 
    this.items = new SortableBindingList<Model>(items); 

    // oops! "items" is a List<T>... what I really wanted was 
    // "this.items" which is a SortableBindingList<T> 
    dataGridView1.DataSource = items; 
} 

回答

0

如果我理解你的問題。因而SortableBindingList

給定的例子是:

 this.dataGridView1.AutoGenerateColumns = false; 

     this.ColumnId.DataPropertyName = "Id"; 
     this.ColumnFirstName.DataPropertyName = "FirstName"; 
     this.ColumnLastName.DataPropertyName = "LastName"; 
     this.ColumnBirthday.DataPropertyName = "Birthday"; 
     this.ColumnScore.DataPropertyName = "Score"; 

     List<Person> list = new List<Person>(); 
     list.Add(new Person(1, "Tim", "4", new DateTime(1980, 4, 30), 100.1)); 
     list.Add(new Person(2, "Amy", "2", new DateTime(1983, 1, 1), 200.2)); 
     list.Add(new Person(3, "Sarah", "3", new DateTime(1984, 1, 24), 300.3)); 
     list.Add(new Person(4, "Mike", "1", new DateTime(1988, 3, 21), 400.4)); 

     SortableBindingList<Person> persons = new SortableBindingList<Person>(list); 

     this.dataGridView1.DataSource = persons; 

所以,從List<Person>SortableBindingList列在PersonFields and Properties創建的基本。

你是怎麼從你的問題?:

的意思,但該溶液(和其他人)似乎只針對手動創建的列上工作。

更新

試試這個

 dataGridView1.AutoGenerateColumns = true; 
     IEnumerable<SomeModel> items = GetTheItems(); 

     SortableBindingList<SomeModel> items = new SortableBindingList<SomeModel>(items.ToList()); 
     dataGridView1.DataSource = items; 
+0

我想'的AutoGenerateColumns = TRUE; - 我不希望配置在設計或代碼列。 –

+0

好..試試這個'SortableBindingList items = new SortableBindingList ([yourItemList])'; – spajce

+0

我修改了我的帖子。我希望它會幫助並得到一些想法:) – spajce

相關問題