web-dev-qa-db-ja.com

DataGridViewにデータを追加する方法

私は次のような構造を持っています

 X={ID="1", Name="XX",
    ID="2", Name="YY" };

このデータを2列のDataGridViewにダンプする方法

GridViewは次のようなものです

ID | Name

LINQを使用してこれを行うことはできますか?私はDataGridViewに不慣れです。Pleaeseがこれを行うのを手伝ってくれます。

前もって感謝します

7

まず、datagridに2つの列を追加する必要があります。設計時に行うことができます。 Columnsプロパティを参照してください。次に、必要なだけ行を追加します。

this.dataGridView1.Rows.Add("1", "XX");
23
Arseny

これを行うための私のお気に入りの方法は、「マップ」と呼ばれる拡張関数を使用することです。

public static void Map<T>(this IEnumerable<T> source, Action<T> func)
{
    foreach (T i in source)
        func(i);
}

次に、次のようにすべての行を追加できます。

X.Map(item => this.dataGridView1.Rows.Add(item.ID, item.Name));
3
diceguyd30

次のようなクラスがあるとしましょう。

public class Staff
{
    public int ID { get; set; }
    public string Name { get; set; }
}

そして、DataGridViewをフォームにドラッグアンドドロップしたと仮定し、dataGridView1という名前を付けます。

DataGridViewをバインドするためのデータを保持するには、 BindingSource が必要です。これがあなたがそれをすることができる方法です:

private void frmDGV_Load(object sender, EventArgs e)
{
    //dummy data
    List<Staff> lstStaff = new List<Staff>();
    lstStaff.Add(new Staff()
    {
        ID = 1,
        Name = "XX"
    });
    lstStaff.Add(new Staff()
    {
        ID = 2,
        Name = "YY"
    });

    //use binding source to hold dummy data
    BindingSource binding = new BindingSource();
    binding.DataSource = lstStaff;

    //bind datagridview to binding source
    dataGridView1.DataSource = binding;
}
3
bla

LINQは「クエリ」言語(つまりQ)であるため、データの変更はその範囲外です。

そうは言っても、あなたのDataGridViewはおそらくItemsSourceにバインドされており、おそらくタイプ_ObservableCollection<T>_または同様のものです。その場合は、X.ToList().ForEach(yourGridSource.Add)のようなことをしてください(これは、グリッド内のソースのタイプに基づいて調整する必要がある場合があります)。

0
danijels

あなたはあなたのコードからこのようにするべきです

DataGridView.DataSource = yourlist;

DataGridView.DataBind();

0
Kimtho6