2016-06-02 1 views
0

Ich habe eine einfache Access-Datenbank, die eine "ITEM ID" und einen "ITEM NAME" hat. Unten ist ein Beispiel.Wie zeigen Sie mehrere Access-Datenbankspalten in einer WinForms-ListBox an?

1 Schwert

2 Ax

3 Cat

Beim Versuch, dies in meiner ListBox zu bekommen eine Abfrage mit es zeigt "System.Data.DataRow". Ich habe Wege gefunden, die "ITEM ID" oder "ITEM NAME" getrennt aber nicht zusammen anzuzeigen, wie ich es wünsche.

Wenn mir jemand sagen könnte, wie man es "1 Sword" zeigt, wäre das großartig, da ich jetzt stundenlang nach Antworten suche.

Im Moment benutze ich eine Abfrage-Box, um die oben genannten Hoffnungen aufzurufen, damit die Ergebnisse auf der listBox angezeigt werden.

Auch ich benutze WinForms in Visual Studio 2015 (erforderlich). Ich möchte auch nichts anderes als eine ListBox verwenden. Abgesehen von diesem Problem hat es das Aussehen, das ich will und alles, was ich brauche.

+0

Wie lautet der Spaltenname für "ITEM ID" und "ITEM NAME"? Tun Sie dies in Ihrer Abfrage ITEMID (columnname) + '' + ITEMNAME (columnname) AS ITEM –

+0

gerade jetzt heißen sie ITEM ID und ITEM NAME in der Datenbank –

Antwort

2

Versuchen Sie folgendes:

private void RunQuery() 
{ 
    errorMsg = ""; 
    q = SearchBoxItemsAll.Text; 
    try 
    { 
     OleDbCommand cmd = new OleDbCommand(q, conn); 
     OleDbDataAdapter a = new OleDbDataAdapter(cmd); 

     DataTable dt = new DataTable(); 

     a.SelectCommand = cmd; 
     a.Fill(dt); 
     a.Dispose(); 
     foreach(var v in dt.Rows) 
     {       
     listBox1.Items.Add(v[0].ToString()+" "+v[1].ToString()); 
     } 
    } 
    catch (Exception ex) 
    {} 
} 

Der bessere Weg, es zu tun ist durch die Display und Valuemember Angabe und Änderung Ihrer SQL:

private void RunQuery() 
{ 
    errorMsg = ""; 
    //q = SearchBoxItemsAll.Text; 
    //Concatenate the ID and the Name in the SQL Query 
    q = "SELECT [ITEM ID] , ([ITEM ID] +' '+ [ITEM NAME]) AS [ITEM NAME] FROM ITEMS"; 
    try 
    { 
     OleDbCommand cmd = new OleDbCommand(q, conn); 
     OleDbDataAdapter a = new OleDbDataAdapter(cmd); 

     DataTable dt = new DataTable(); 

     a.SelectCommand = cmd; 
     a.Fill(dt); 
     a.Dispose(); 
     listBox1.DisplayMember = "ITEM_NAME"; 
     listBox1.ValueMember = "ITEM_ID"; 
     listBox1.DataSource = dt; 
    } 
    catch (Exception ex) 
    {} 
} 
+0

Ich habe es versucht, aber es zeigt immer noch nicht die ITEM ID Verwenden Sie SELECT * FROM ITEMS als die Abfrage zeigt nur die ITEM NAME –

+1

Änderung sql Code zu 'SELECT [ITEM ID], ([ITEM ID] + '' + [ARTIKELNAME]) AS [ARTIKELNAME] VON ITEMS' –

+0

Fehler "Der Anbieter konnte den Double-Wert nicht ermitteln. Beispielsweise wurde die Zeile gerade erstellt, der Standardwert für die Spalte "Double" war nicht verfügbar und der Verbraucher hatte noch keinen neuen Double-Wert festgelegt. Bleib krank Schau dir deine Änderungen an und sieh nach, ob sich das ändert. BEARBEITEN: ja immer noch die gleiche Nachricht –

0

Steuerelement List-Box nicht mehrspaltigen Anzeige unterstützen. Versuchen Sie stattdessen ListView Control und fügen Sie Unterelemente hinzu

+0

Ich wollte nie mehrspaltige Anzeige Ich wollte beide in der 1 Spalte zeigen, die jetzt funktioniert. –

Verwandte Themen