Zum Inhalt springen

DataGridView speichern?


Audi

Empfohlene Beiträge

Hallo hoffe ihr könnt mir helfen,

habe ein DataGridView und möchte es über einen Button speichern um evt. Zugriff drauf zu haben, die Datenbank selbst soll unberührt bleiben (ReadOnly), wie gehe ich da vor?

Habe gedacht dass es am besten sein würde, wenn es in XML abgespeichert wird.

Danke schon im Voraus!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also hier der Code zum Schreiben in die Datei. Habe auch überprüft, ob was in der Tabelle steht. Ist auch unabhängig davon, wie viele Spalten es gibt. Mit den Streams bin ich auch noch etwas ungeübt. Sieht vielleicht etwas komisch aus, aber es funktioniert.

System::Void Form1::bCSVExport_Click(System::Object^  sender, System::EventArgs^  e)
{
long count = dgvResults->ColumnCount;

StreamWriter^ csvStream;

// Open SaveDialog
SaveFileDialog^ saveDialog = gcnew SaveFileDialog;
saveDialog->Filter = "CSV Files (*.csv)|*.csv|All files (*.*)|*.*";
saveDialog->FilterIndex = 1;

// Is dgvResults empty?
if (dgvResults->Rows->Count > 1)
{
if (saveDialog->ShowDialog() == ::DialogResult::OK)
{
Stream^ sFile;
try
{
sFile = saveDialog->OpenFile();
}
catch (System::Exception ^exp)
{
MessageBox::Show(exp->ToString(), "Error");
return;
}
csvStream = gcnew StreamWriter(sFile);

if ( csvStream != nullptr )
{
long columns = dgvResults->ColumnCount;
long rows = dgvResults->RowCount - 1;
String^ strline;

// Print the Header
strline = ColNr->HeaderText;
for(int i = 1; i < columns; i++)
{
strline += ";" + dgvResults->Columns[i]->HeaderText;
}
csvStream->WriteLine(strline);

// Print the Table
for (int i = 0; i < rows; i++)
{
strline = dgvResults[0,i]->Value->ToString();

for (int j = 1; j < columns; j++)
{
try
{
strline += ";" + dgvResults[j,i]->Value->ToString();
}
catch (System::Exception ^)
{
strline +=";";
}
}

csvStream->WriteLine(strline);
}
}
csvStream->Close();

String^ filename = saveDialog->FileName;

// Open Excel
try
{
System::Diagnostics::Process::Start(filename);
Form1::BringToFront();
}
catch (System::Exception ^exp)
{
MessageBox::Show(exp->ToString(), "Error");
return;
}
}
}
}[/PHP]

Das Laden ist in meinem Fall nicht notwendig gewesen. Aber ich denke, das funktioniert genauso. Stream öffnen zum lesen und dann zeilenweise in das dgv oder die DataTable eintragen.

Gruß Kati82

P.S.: sehe gerade, dass ich die aller erste Variable "count" nirgendwo gebrauche. Ich glaub die kann weg.

Bearbeitet von Kati82
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe hier noch eine Idee

in einer Centralen klasse definierst du eine Variable als DatagridView

Public globaldgvSave as DatagridView
Beim drücken auf Speichern machst folgendes:

globaldgvSave = new DataGridView

globaldgvSave = Me.dgv

Jetzt kannst du auf die Variable genauso zugreifen wie als wenn du auf das DataGridView selbst zugreifst.

Sauberer wäre natürlich wenn du diese Variable nicht Public machst sondern Private aber dafür "Public Sub get und set"

mfg

Hans-Jörg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...