2011-01-20 12 views
2

ItemIdが主キーで、Name、Size、Priceが一意であるテーブルInventory(ItemId、Name、Size、Price、otherinfo)があります。
コンボボックスを名前でバインドすると、繰り返し名前が表示されますが、各名前は一度しか表示されませんが、サイズは同じです。データバインドされたコンボボックス内の異なる値

データソースにバインドされたコンボボックスに一意の値を読み込むにはどうすればよいですか?あなたがこれを行うことができます

+0

あなたはそれが一意の名前にバインドしたい場合は、あなたがITEMIDにバインドすることはできません。私が理解しているように、ID = 1、Name = Aのようなデータを持つことができます。 ID = 2、Name = A、これは、これらのレコードがキーが異なるため、すでに一意であることを意味します。名前にバインドするだけの場合は、ユーザーがID 1またはID 2から名前Aを選択したかどうかをどのように知ることができますか?私はそれが理にかなったことを願う – Divi

+0

はい、名前にバインドします。サイズと価格の2つのコンボボックスがあります。そのため、ユーザがバスケットを選択した場合は、20を大きくしてユニークなItemIdを返します。 – SMUsamaShah

+0

あなたはこれに対してより良い提案をしていますか?名前、サイズ、価格を選択し、結果としてユニークなitemIdを取得します。 – SMUsamaShah

答えて

7

は、

ddlName.DataSource = items.Select(item=>item.Name).Distinct().ToList(); 
ddlName.DataBind(); 

ddlSize.DataSource = items.Select(item=>item.Size).Distinct().ToList(); 
ddlSize.DataBind(); 

ddlPrice.DataSource = items.Select(item=>item.Price).Distinct().ToList(); 
ddlPrice.DataBind(); 

をそしてすべての3つのドロップダウンリストの選択に基づいてITEMIDを見つける(あなたはあなたのためにそれをcomplieするビットと仕事を微調整する必要があります)。

これは、C#で、あなたはこのことができますLINQ

希望を持っていることを前提としています。

Edit--(なしLINQ場合)

IList<string> names = new List<string>(); 

foreach (Item item in Items) 
    if (!names.Contains(item.Name)) 
     names.Add(name); 

ddlName.DataSource = names; 
ddlName.DataBind(); 

//Do similar for price and size. 

編集(SQLコマンドを使用します)

select distinct Name from Item 
select distinct Size from Item 
select distinct Price from Item 
+0

LINQを持っていないとどうなりますか?私はネット2.0でそれを作っています。このコードの「項目」とは何ですか? – SMUsamaShah

+0

私はデータセットとテーブルを持っていて、値やSQL自体を取得しています – SMUsamaShah

+0

編集内容を参照してください – Divi

関連する問題