2013-01-16 2 views
-2

양식로드시 콤보 박스 바인딩을 수행했습니다. ComboBox를 수많은 제품과 함께로드하려고합니다. 그런 다음 바코드를 기반으로 ComboBox에서 해당 제품을 선택하고 싶습니다.데이터 집합에서 항목을 검색하여 콤보 상자에 표시

+2

는 SQL 문에 WHERE 절을 추가 하시겠습니까? –

+0

이 코드는 where 문을 사용하고 다른 모든 값이 콤보 상자에서 제거되면 바코드의 모든 항목을 추가하기위한 것입니다. 콤보 상자에서 선택한 값만 표시하는 동안 콤보 상자의 모든 값이 필요합니다. – alternatefaraz

+0

어쩌면 질문을 명확하게해야 할 수도 있습니다. 제품 WHERE 바코드가 스캔 한 바코드와 일치하도록하려면 기존 SQL 문에 WHERE 조건을 추가하기 만하면됩니다. –

답변

1

난 당신이 찾고 있던 생각 :

DataTable products = new DataTable(); 
products.Columns.Add("Product_Name"); 
products.Columns.Add("Product_BarCode"); 

products.Rows.Add("test1", 123456); 
products.Rows.Add("test", 923456); 
products.Rows.Add("test8", 823456); 
products.Rows.Add("test", 723456); 
products.Rows.Add("test0", 023456); 

productname_tb.DataSource = products; 
productname_tb.DisplayMember = "Product_Name"; 
productname_tb.ValueMember = "Product_BarCode"; 

// select the "test8" item by using it's Product_BarCode value of 823456 
for (int i = 0; i < productname_tb.Items.Count; i++) 
{ 
    if (((System.Data.DataRowView)(productname_tb.Items[i])).Row.ItemArray[1].ToString() == "823456") 
    { 
     productname_tb.SelectedItem = productname_tb.Items[i]; 
     break; 
    } 
} 
+0

필요있는 바코드를 countains 텍스트 상자 (0 = 난을 int로, 나는 alternatefaraz

+0

예, 발견 된 값을 루프에서 제거 할 수 있습니다. –

1

정확하게 알고 싶으면 ComboBox에 수많은 제품을로드하고 바코드를 기반으로 ComboBox에서 해당 제품을 선택하고 싶습니다. 다음을 시도하십시오.

productname_tb.Items.IndexOf("<YOUR BARCODE>"); 

이 방법이 효과가 있습니까?

+0

그 부분입니다. 그는 콤보 상자의 결과 값을 WHERE 절로 매개 변수화하는 쿼리가 필요합니다. –

+0

이 코드를 사용한 후 오류가 발생했습니다. "null 데이터는 null입니다. null에서이 유형의 코드를 사용할 수 없습니다." 이 productname_tb.Items.IndexOf (productbc_tb.Text)와 같은 코드를 편집했습니다. – alternatefaraz

+0

@ 로버트 하비 (Robert Harvey) 특정 제품 만 선택된 모든 제품을 목록에 포함하지 않으려는 경우에만 적용됩니다. 콤보 박스는 단 하나의 항목으로 제한됩니다. – alan

관련 문제