0

データグリッド ビューに問題があります。コードとエラーメッセージを含む画像を添付しました。このエラーの理由を知りたいです。ありがとう。ここに画像の説明を入力

4

2 に答える 2

0

LINQ クエリは必要ありません。リストを DataSource として設定するだけです。この場合、DataMember を設定する必要はありません。

    private void Form4_Load(object sender, EventArgs e)
    {
        List<Products> productList = new List<Products>()
        {
            new Products{ProductName = "P1", ProductPrice = 56, Category = "c1"},
            new Products{ProductName = "P2", ProductPrice = 36, Category = "c1"}    
        };

        //var p = from s in productList select s;

        dataGridView1.DataSource = productList;
        //dataGridView1.DataMember = p.ToString();
    }

編集

LINQ クエリが返されIEnumerableます。ただし、DataGridView クラスは、標準の Windows フォーム データ バインディング モデルをサポートしています。つまり、データ ソースは、IList、IListSource、IBindingList、および IBindingListView のいずれかのインターフェイスを実装する任意の型にすることができます。ToList()そのため、LINQ の結果を呼び出す必要があります。詳細については、このMSDN リンクを参照してください。

ただし、あなたの場合、これを行うことはproductListDataSource として設定することと同じです (LINQ クエリには並べ替えやグループ化がないため、結果は同じになります)。

LINQ で遊びたい場合は、これを試してください (リストはProductPrice昇順で並べられます) 。

   var p = from s in productList orderby s.ProductPrice select s;
   dataGridView1.DataSource = p.ToList();
于 2012-06-17T06:18:02.317 に答える
0

設定する代わりに、DataMember単純に bind メソッドを呼び出しますdataGridView1.DataBind()MSDNで述べられDataMemberているように、次の目的で使用されます。

DataGridView がデータを表示しているデータ ソース内のリストまたはテーブルの名前を取得または設定します。

于 2012-06-17T05:01:36.023 に答える