2017-12-18 1 views
1

Ich habe eine ComboBox, die mit den Kopfzeilen einer Datenbank gefüllt ist.Filter Ausdruck wird nicht zu einem booleschen Begriff ausgewertet, C#

Wenn ein Benutzer einen Header auswählt, möchte ich die Werte dieser Spalte in einer ListBox anzeigen.

Ich versuche es so zu machen.

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); 
     } 
    } 

Wenn ich jedoch eine nicht boolean Typ Spalte wählen sie diesen Fehler:

„Filter Ausdruck auswerten nicht zu einem Booleschen Ausdruck“

Und selbst wenn ich eine boolean Spalte wählen Sie Es zeigt nur den Namen des Programms an. Es scheint jedoch einige Daten von der Datenbank zu bekommen, da es die korrekte Anzahl von Programmnamen von der Anzahl von "wahren" Termen in der Datenbank anzeigt.

+2

Die wichtigen Informationen fehlen hier. Was ist der Inhalt von comboBox1.Text? (Und rufen Sie ToString nicht auf einer String-Eigenschaft, es ist nutzlos) – Steve

+1

"Es zeigt nur den Namen des Programms" Ich denke, es ist der Namespace des Typs der Elemente in 'ASH_PROD_ORDERS', weil Sie das gesamte' columnItem' hinzufügen . Ich denke, Sie müssen entweder ein 'DisplayMember' in Ihrer' listBox1' setzen oder 'listBox1.Items.Add (columnItem.Name);' oder eine beliebige Eigenschaft Ihres ash_prod_order, die Sie anzeigen möchten. –

Antwort

2

Wenn Sie den Inhalt einer einzigen Spalte ohne jede Bedingung zeigen wollen, müssen Sie nicht auf SELECT aber nur Schleife über die Zeilen der Tabelle

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()); 
    } 
} 

Die DataTable.Select Methode wird verwendet, wenn Sie müssen den Inhalt der Tabelle filtern, indem Sie eine Art Ausdruck hinzufügen, der mit einem booleschen Wert analysiert werden kann.

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

Im Beispiel oben wir eine Teilmenge der Tabellenzeilen nehmen, die den ‚Column‘ Zeichenfolge in der Spalte mit dem Namen ‚Spaltenname‘ haben.
Andere nützliche Anwendungen von Select sind an die Erstellung einer neuen Tabelle mit einer bestimmten Reihenfolge gebunden. Siehe die DataColumn.Select und die DataTableExtensions.CopyToDataTable Dokumentation

+1

Danke, genau das habe ich gesucht. –

Verwandte Themen