2017-10-23 1 views
1

Ich greife auf eine .CSV-Datei zu und konvertiere die Werte, die in einem DataGrid angezeigt werden sollen. Mein Problem war, dass ich nur eine definierte Instanz hatte und außerhalb der Schleife war Legen Sie seine Eigenschaften fest.Erstellen mehrerer Instanzen und Festlegen von Eigenschaftswerten

Wie kann ich mehrere Instanzen innerhalb der Schleife erstellen und die Eigenschaftswerte festlegen, während ich dabei bin?

CSV-Format ist: 'header' 'string, string, int, string' (bis zu 300 Einträge)

Hier ist der Haupt-Code, genannt von Klicken auf Menü-> Geöffnet:

 // Function to open a .CSV file and assign the values within to a List. 
    private void openToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     List<Stock> stocks = new List<Stock>(); 
     // Set strings to retrieve current directory and store stocklist.csv as "filename" 
     string filename = @"C:\StockFile\stocklist.csv"; 

     // Read all lines in file and set indexer to 0. 
     string[] linesInFile = File.ReadAllLines(filename); 
     string[] StockDetails = new string[0]; 

     for (int i = 1; i < linesInFile.Length; i++) 
     { 
      // Load lines in file and increment by 1. 
      string currentLine1 = linesInFile[i]; 
      // Split the current line by separator , 
      StockDetails = currentLine1.Split(','); 

      Stock item = new Stock(); 
      stocks.Add(item); 
     } 
     var list = new BindingList<Stock>(stocks); 
     stockGridView.DataSource = list; 
    } 

Hier ist meine auf Klasse:

class Stock 
    { 
     public string Code { get; internal set; } 
     public string Desc { get; internal set; } 
     public int CurCnt { get; internal set; } 
     public string Order { get; internal set; } 

     public Stock(string code, string desc, int curcnt, string order) 
     { 
      Code = code; 
      Desc = desc; 
      CurCnt = curcnt; 
      Order = order; 
     } 
    } 

Antwort

0

Wenn ich verstehe, was Sie zu tun versuchen, die Instanz von Lagerbestand initialisieren müssen Artikel, und jedes Mal in der Schleife das neue Schlüsselwort eine neue Instanz der es schaffen wird und das Hinzufügen der erzeugten Instanz der Liste

private void openToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     List<Stock> stocks = new List<Stock>(); 
     // Set strings to retrieve current directory and store stocklist.csv as "filename" 
     string filename = @"C:\StockFile\stocklist.csv"; 

     // Read all lines in file and set indexer to 0. 
     string[] linesInFile = File.ReadAllLines(filename); 
     string[] StockDetails = new string[0]; 

     for (int i = 1; i < linesInFile.Length; i++) 
     { 
      // Load lines in file and increment by 1. 
      string currentLine1 = linesInFile[i]; 
      // Split the current line by separator , 
      StockDetails = currentLine1.Split(','); 

     Stock item = new Stock(StockDetails[0],StockDetails[1],StockDetails[2],StockDetails[3]); 
    stocks.Add(item); 
     } 
     var list = new BindingList<Stock>(stocks); 
     stockGridView.DataSource = list; 
    } 
+0

Perfect, danke für das, ist das, was ich fehlte jetzt so eklatant, ich Ich bin froh, dass ich sagen kann, ich bin nur ein Neuling in diesem Zeug. Haha. Data Grid wird jetzt vollständig aus der Liste aufgefüllt (nachdem die Spaltennamen so geändert wurden, dass sie mehr als nur Platzhalter sind). –

Verwandte Themen