2016-05-05 1 views
1

Im folgenden Code angezeigt werden,Möchten Sie den Listeninhalt in der Gridview mit Windows Form C#

  List<string> unaffectedDb = new List<string>(); 
      List<string> affectedDb = new List<string>(); 
      List<string> nticdblist = new List<string>(); 
      nticdblist = Directory.GetFiles(textBox3.Text,"*.mdb").ToList(); 
      foreach(var nticdb in nticdblist) 
      { 
       using(var connection = new OleDbConnection("Data Source="+ nticdb + ";Persist Security Info=False;Provider=Microsoft.Jet.OLEDB.4.0")) 
       { 
        string tablename = this.textbox1.Text; 
        string columnname = this.textbox2.Text; 
        string strcommand = " SELECT "+columnname + " From " + tablename + " "; 
        connection.Open(); 
        OleDbCommand command = new OleDbCommand(strcommand , connection); 
        OleDbDataAdapter adapter = new OleDbDataAdapter(command); 
        OledbDataReader reader = command.ExecuteReader(); 
        if(reader.HasRows.Equals(0)) 
        { 
        unaffectedDB.Add(nticdb); 
        } 
        else 
        { 
        affectedDB.Add(nticdb); 
        } 
        dataGridView1.DataSource = affectedDB; 
       } 
      } 


     } 
    } 
} 

Ich will nur affecteddb und unaffecteddb Inhalte im gridview nämlich die zwei Liste anzuzeigen, i für eine der versucht, die Liste die Grid-Ansicht wird nicht in der Ausgabe angezeigt, bitte geben Sie einige Ideen

+0

Zunächst ist "Adapter" nie Benutzer. Sie haben auch 'dataGridView1.DataBind()' verpasst. –

+0

Wenn Gridview nicht angezeigt wird und keine Laufzeitfehler vorhanden sind, müssen Sie nur Ihre Gridview binden "dataGridView1.DataBind();" –

+0

@IgorGorjanc OP möchte die Datenquelle nur dort speichern, wo Zeilenänderungen vorhanden sind, und sie in der dataGridView anzeigen, sodass es nicht wirklich mit dem Problem zusammenhängt, nach dem er fragt. –

Antwort

0

DataGridView erwartet ein Objekt.

Das ist, weil DataGridView nach Eigenschaften von enthaltenden Objekten sucht. Für Zeichenfolge gibt es nur eine Eigenschaft - Länge. So müssen Sie einen Wrapper für eine Zeichenfolge wie diese

Schauen Sie sich das answer.

public class DataGridViewItemFoo 
{ 
    public string Value { get; set; } 
    public DataGridViewItemFoo(string value) 
    { 
     this.Value = value; 
    } 

} 

List<DataGridViewItemFoo> affectedDbFoo = affectedDb.Select(ii => new DataGridViewItemFoo(ii)).ToList(); 

dataGridView1.DataSource = affectedDbFoo; 
dataGridView1.Refresh(); 

UPDATE:

Hier ist ein Screenshot eines Arbeitsbeispiels auf meine Antwort basiert.

enter image description here

+0

Danke, ich habe versucht, die oben genannten Inhalte sind in der Rasteransicht hinzufügen, aber nicht in der Ausgabe iam immer leer gridview – Sakthignanavel

+0

Sie können dataGridView1.Refresh(); um die Rasteransicht zu aktualisieren –

+0

Danke, versucht durch Auffrischen auch immer noch der Inhalt wird nicht angezeigt nur leere Rasteransicht angezeigt wird, enthält die Liste den Pfad der MDB-Dateien, ob es für die Anzeige auswirken wird ?? – Sakthignanavel