2017-12-18 16 views
1

데이터베이스의 헤더가 채워진 comboBox가 있습니다.필터식이 부울 용어로 평가되지 않습니다. C#

사용자가 머리글을 선택하면 해당 열의 값을 listBox에 표시하려고합니다.

나는 이렇게하려고하고있다. 내가 아닌 부울 유형 열을 선택하면

private void button3_Click_2(object sender, EventArgs e) 
    { 
     listBox1.Items.Clear(); 

     //name of column to display data from 
     var selectedColumn = comboBox1.Text.ToString(); 

     //dataRow array of data 
     var selectedColumnItems = aSH_ORDER_DBDataSet1.ASH_PROD_ORDERS.Select(selectedColumn); 

     //iterate through dataRow and display in listBox 
     foreach (var columnItem in selectedColumnItems) 
     { 
      listBox1.Items.Add(columnItem); 
     } 
    } 

그러나,이 오류를 얻을 :

그리고 "필터 expression이 부울 용어로 평가하지 않습니다"심지어 내가 부울 열을 선택 할 때 , 그것은 단지 프로그램의 이름을 표시합니다. 그러나 데이터베이스의 "실제"용어의 수에서 정확한 수의 프로그램 이름을 표시하기 때문에 데이터베이스에서 일부 데이터를 가져 오는 것 같습니다. 당신이 어떤 조건없이 단일 컬럼의 내용을 표시하려면

+2

중요한 정보는 여기에 없습니다. comboBox1.Text의 내용은 무엇입니까? (문자열 속성에서 ToString을 호출하지 않으면 쓸모가 없습니다.) – Steve

+1

"프로그램의 이름 만 표시합니다."전체 'columnItem'을 추가하기 때문에'ASH_PROD_ORDERS'에있는 항목 유형의 네임 스페이스 인 것 같습니다. . 나는 당신이 당신의'listBox1'에'DisplayMember'을 설정하거나'listBox1.Items.Add (columnItem.Name);'또는 당신이 표시하고자하는 ash_prod_order의 속성을 사용할 필요가 있다고 생각합니다. –

답변

2

당신은 선택할 필요가 없습니다하지만 DataTable.Select의 방법을 사용

private void button3_Click_2(object sender, EventArgs e) 
{ 
    listBox1.Items.Clear(); 

    //name of column to display data from 
    var selectedColumn = comboBox1.Text.ToString(); 

    //iterate through dataRow and display in listBox 
    foreach (DataRow row in aSH_ORDER_DBDataSet1.ASH_PROD_ORDERS.Rows) 
    { 
     listBox1.Items.Add(row[selectedColumn].ToString()); 
    } 
} 

테이블의 행을 통해 당신은 루프 부울 값으로 구문 분석 될 수있는 일종의 표현식을 추가하여 테이블 내용을 필터링해야합니다.

DataRow[] result aSH_ORDER_DBDataSet1.ASH_PROD_ORDERS.Select("ColumnName = 'ColumnValue'"); 

위의 예에서는 'ColumnName'열에 'ColumnValue'문자열이있는 테이블 행의 하위 집합을 사용합니다.
Select의 다른 유용한 용도는 특정 순서로 새 테이블을 만드는 것과 관련이 있습니다. DataColumn.SelectDataTableExtensions.CopyToDataTable 설명서를 참조하십시오.

+1

고마워, 그게 내가 찾고 있었던거야. –