2011-01-20 3 views
2

ItemId가 기본 키이고 이름, 크기, 가격이 고유 한 테이블 인벤토리 (ItemId, Name, Size, Price, otherinfo)가 있습니다.
이름으로 콤보 상자를 바인딩 할 때 각 이름이 한 번만 나타나기를 원하는 모든 반복되는 이름이 나타납니다. 크기는 동일하게 발생합니다.데이터 바인딩 된 콤보 상자의 고유 값

데이터 소스에 바인딩 된 콤보 박스에서 고유 값을로드하는 방법은 무엇입니까? 당신은이 작업을 수행 할 수

+0

, 당신은 항목 ID에 결합 할 수 없습니다 . 내가 ID = 1, Name = A와 같은 데이터를 가질 수 있음을 이해합니다. ID = 2, Name = A는 키가 다르기 때문에이 레코드가 이미 고유하다는 것을 의미합니다. 이름에 대해서만 바인딩하는 경우 사용자가 ID 1 또는 ID 2에서 이름 A를 선택했는지 어떻게 알 수 있습니까? 나는 그것이 의미가 있기를 바랍니다. – Divi

+0

예, 이름에 바인딩하고 싶습니다. 크기와 가격에 두 개의 다른 콤보 상자가 있습니다. 따라서 사용자가 바구니를 크게 선택하면 고유 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(); 

을 그리고 세 개의 드롭 다운 목록의 선택에 따라 항목 ID를 찾아 (당신은 당신을 위해 그것을 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가 없으면 어떻게해야합니까? NET 2.0에서 만들고있다. 이 코드에서 'items'는 무엇입니까? – SMUsamaShah

+0

값 또는 SQL 자체를 가져올 데이터 세트 및 테이블 어댑터가 있습니다 – SMUsamaShah

+0

편집 내용을 참조하십시오 – Divi

관련 문제