0

私が書きたいコードは次のようになります。

IEnumerable<SomeModel> items = GetTheItems();

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

また、データ グリッドはヘッダーに並べ替えグリフを表示し、ユーザーがそれらをクリックして並べ替えることができるようにします。

私がこれまでに持っていた最も有望なリードは、この回答で提案された SortableBindingList でしたが、そのソリューション (およびその他) は手動で作成された列に対してのみ機能するようです。

アップデート

さて、卵は今私の顔にあります!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;
}
4

1 に答える 1

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の列は の に基づいて作成されFields and PropertiesますPerson

あなたの質問から何を意味しましたか?:

しかし、その解決策(およびその他)は、手動で作成された列に対してのみ機能するようです。

アップデート

これを試してみてください

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

        SortableBindingList<SomeModel> items = new SortableBindingList<SomeModel>(items.ToList()); 
        dataGridView1.DataSource = items;
于 2012-12-19T23:28:48.273 に答える