0

これが、ASP.NET Web フォーム プロジェクトで発生している問題です。

データベースのすべての製品を表示するデータリストがあります。各製品には 1 つ以上の色があります。現時点では、すべての製品とそのデフォルトの写真を表示するために次のようなクエリを作成しますが、その製品に関連する色は表示しません:

var query = from p in db.Products
                        from c in db.Pics
                        where c.ProductId == p.ProductId
                        where c.IsDefault == true
                        select new { p.ProductId, p.ProductType, p.Name, p.Number, p.Package, p.Model, p.Size, p.Material, p.MantoLengh, c.PicAddress};

            DataList1.DataSource = query;
            DataList1.DataBind();

関連する色を DataList コントロール内のリスト コントロール (データリストやその他のリスト コントロールなど) にバインドする方法がわかりません。詳細については、データベース ダイアグラムのビューを次に示します。

ここに画像の説明を入力

4

2 に答える 2

1

このクエリは機能すると思いますが、構文が少しずれている場合は事前に謝罪します.C#よりもVBの方が多いです...

        var query = from p in db.Products 
                    select new { p.ProductId, 
                        p.ProductType, 
                        p.Name, 
                        p.Number, 
                        p.Package, 
                        p.Model, 
                        p.Size, 
                        p.Material, 
                        p.MantoLengh, 
                        p.Pics.Where(x => x.IsDefault).Select(x => x.PicAddress).ToList(), 
                        p.Colors.Select(x => x.ColorHex).ToList() };

基本的に、選択した匿名型では、ラムダを使用して Select().ToList() を使用して 1 対多のコレクションをフェッチし、.Where() を使用してフィルタリングを実行できます。

それが役立つことを願っています。

編集 - あなたのコメントに応じて:

実際の色を作成するのに最適なように見えたので、16 進数の色の文字列を選びました。16 進数から色を作成するには、この記事を参照してください。リストのどこに色を追加しますか?

于 2011-06-16T11:48:24.453 に答える
0

結果をデータリストにバインドした後、DataList $<%#query.DataItem("Colors")%> で次のようなことができるはずです

于 2011-06-16T12:37:02.383 に答える