CSV Daten in DataGridView

LukeS

Erfahrenes Mitglied
Hallo zusammen

Bin neu in C# und .NET. Habe in letzter Zeit viel in C++ und Qt programmiert. Deshalb muss ich mich an die Konzepte von .NET noch gewöhnen.

Mein Problem:

Ich habe ein CSV-File, dass ich in einer Tabelle darstellen will. Die Daten müssen editierbar sein.



Das File habe ich geparst. Die Daten sind in einer ArrayList von ArrayLists gespeichert. Ich könnte aber die Daten auch auf eine andere Art speichern.



Nun möchte ich die Daten in einem DataGridView darstellen.


Wie mache ich das?
In Qt gibts eine TableView und ein TableModel. Also das Model-View-Pattern. Gibs sowas in .NET? Oder macht man da sowas komplett anders?

Vielen Dank für eure Hilfe!

Gruss Lukes
 
Hi

Entweder du packst die Daten in eine DateTable, die du als Source an den DGV hängst du füllst den DGV "händisch" (über die Daten im der CSV iterieren und einzeln in die DGV-Zellen schreiben.
 
Vielen Dank für die Hilfe!

Habe es jetzt geschaft, die Daten aus dem File zu lesen.
Code:
 internal class CsvDataTable : DataTable
 {
...
 public CsvDataTable(string path)
      {
         _path = path;
         if (!File.Exists(_path))
            throw new FileNotFoundException();

         FileInfo fileInfo = new FileInfo(_path);
         string connectionString = String.Format("Driver={{Microsoft Text Driver (*.txt; *.csv)}};Dbq={0};", fileInfo.DirectoryName);
         _connection = new OdbcConnection(connectionString);
         _dataAdapter = new OdbcDataAdapter(String.Format("select * from [{0}]", fileInfo.Name), _connection);
         try
         {
            _connection.Open();
            _dataAdapter.Fill(this);
         }
         catch (Exception e)
         {
            MessageBox.Show(e.Message);
         }
         finally
         {
            _connection.Close();
         }
      }
}

In einem Form erzeuge ich eine DataGridView, der ich als DataSource eine CsvDataTable zuweise.

Jetzt möchte ich jedoch geänderte Daten der DataGridView in die CSV Datei schreiben.
Code:
public void SaveCsvData()
{
    FileInfo fileInfo = new FileInfo(_path);
    string sql_string = string.Format("UPDATE {0}", fileInfo.Name);
 
    var updateCommand = new OdbcCommand(sql_string, _connection);
    _dataAdapter.UpdateCommand = updateCommand;
 
    try
    {
        updateCommand.Connection.Open();
        _dataAdapter.Update(this);
        updateCommand.Connection.Close();
    }
    catch(Exception e)
    {
        MessageBox.Show(e.Message);
    }
}

Jedoch kriege ich eine Fehlermeldung, dass der UpdateCommand nicht richtig ist. Wie schreibe ich den SQL Befehl, so dass er die geänderten Zellen auktualisiert? Es könnTen auch alle Zellen aktualisiert werden. Die tabelle ist nicht besonders gross.

Gruss LukeS
 
Hi

Also soweit mir bekannt, musst du auch beim Update einen Sql Befehl schreiben. Bei deinem fehlt definitiv die Info, welcher Datensatz und darin welche Felder geupdated werden sollen (siehe Sql Update)
 
Zurück