Autor Beitrag
Waterman83
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 03.09.09 00:02 
Hallo c# Freunde,

ich habe mich mitlerweile in C# etwas eingearbeitet und ein kleines nettes Programm geschrieben. Jetzt stehe ich vor dem Problem, dass ich manche Dinge gerne drucken möchte. Eine leere Seite bekomm ich auch schon aus dem Drucker raus. Meine Frage oder besser gesagt Fragen sind nun, wie kann ich eien Seite LAyouten um sie mit einem Datagridview zum Drucken schicken zu können. Ich weiß solche Dinge sind bestimmt auch nicht sonderlich schwer. Allerdings habe ich beim suchen nichts passendes gefunden. Es soll ja auch tools geben, mit denen man so etwas gestalten kann. Sind diese in Visual Studio schon vorhanden? Wie mache ich es am besten?

Danke für Eure Hilfe.

Gruß

Daniel
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 03.09.09 08:30 
Hallo,

ich hoffe doch sehr, dass sich die Daten, die gedruckt werden sollen, in einer Datenmenge - z.B. DataTable - befinden und nicht unmittelbar Bestandteil des DataGridViews sind. Dann solltest du nämlich mit der Suche nach Daten+Report fündig werden. Bestandteil des Visual Studios ist wohl ein ReportViewer, ich weiß aber nicht, ab welcher Version der dabei ist.

Du könntest auch unter CodeProject Erfolg haben; das ist immer eine gute Adresse für spezielle Aufgaben.

Gruß Jürgen
Waterman83 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 03.09.09 08:51 
Hi,

die daten liegen leider nicht in einem Datatable vor sondern sind bestandteil der Tabelle. Vielleicht hat noch jemand eine Idee. Beim Studio handelt es sich um VisualStudio2008.

Gruß

Daniel
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 03.09.09 09:13 
Zitat:
... sondern sind bestandteil der Tabelle.

Welche Tabelle meinst du damit? Wenn du die Daten direkt in das DataGridView eingetragen hast, z.B. so:
ausblenden C#-Quelltext
1:
dgv.Rows[4].Cells["Name"].Value = "mein Name";					

dann ist das ein völlig falsches Vorgehen. Das DataGridView ist, wie der Name schon sagt, ein Grid zur Anzeige (und Bearbeitung) von Daten. Die Daten selbst gehören deshalb in eine eigene Klasse, nicht direkt in die DGV-Zellen.

Beachte den Grundsatz von ADO.NET: Es wird getrennt zwischen den Daten auf der Festplatte (Datenbank o.a.), den Daten im Arbeitsspeicher (DataSet/DataTable o.a.) und den GUI-Elementen. Wenn du das nicht machst, bekommst du eher früher als später die unterschiedlichsten Probleme. Das DataGridView soll selbst nichts von den Daten wissen, sondern per DataBinding/DataSource/BindingSource nur angebunden werden.

Meine Frage nach der Version bezog sich vor allem darauf, ob es die Express-Ausgabe oder eine Profi- oder höhere Version ist.

Jürgen

PS. Auch wenn du meiner grundsätzlichen dringenden Empfehlung nicht folgen willst, sind meine Hinweise auf die Suche nach Daten+Report, ReportViewer und CodeProject dennoch sinnvoll. Mit deinem Satz "Vielleicht hat noch jemand eine Idee" ignorierst du diese Vorschläge; dann sollte ich wohl künftig deine Fragen ignorieren.
Waterman83 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 03.09.09 13:43 
Hi und sorry,

es sollte nicht den Eindruck machen, als wenn ich deine RAtschläge ignoriere. Ich sah mich nur vor dem riesigen Problem die Daten die die Datagridview füllen irgendwie anders zu erstelln um damit die DGV zu füllen. Ich weiß nicht ob es so wie du es für schlecht beschrieben hast gemahct habe, daher schicke ich dir ein Beispiel wie ich es mache. Vielleicht kannst du mir aufgrund dieses Beispiel erklären wie ich es besser mache, auch wenn du schon ein paar Begriiffe dazu geschrieben hast. danke danke danke

dataGridView2.Rows.Clear();
for (int i = 0; i < tListe.Count; i++)
String[] temp = { (((XmlTeilnehmer)t.XmlTeilnehmerliste[i]).Nachname),
((XmlTeilnehmer)t.XmlTeilnehmerliste[i]).Vorname), };
DataGridView2.Rows.Add(temp);

War echt schon froh so die Daten in die DGV zu bekommen. Ich danke dir für deine Gedult.

Gruß

Daniel
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 03.09.09 15:07 
Was ist tListe? Wenn es eine Liste ist, die IList oder IBindingList implementiert, dann geht es doch ganz, ganz einfach:
ausblenden C#-Quelltext
1:
dataGridView2.DataSource = tListe;					

Schau in die SDK-Doku/MSDN bei DataGridView.DataSource nach.

Das empfehle ich grundsätzlich: Lies in der SDK-Doku/MSDN nach, was es bei den Klassen gibt (Eigenschaften, Methoden, Ereignisse).

Außerdem solltest du unbedingt Code als solchen kennzeichnen: mit dem Schere-Button den Beitrag aufrufen, Textbereich markieren, "Bereiche" öffnen, C# auswählen, Plus-Button, Absenden. Das liest sich viel besser.

Jürgen

PS. "Sauer" war ich, weil ich heute früh außer dem Hinweis auf die Struktur Daten vs. Controls auch konkrete Hinweise gegeben hatte. Darauf bist du überhaupt nicht eingegangen, sondern hast stattdessen nach weiteren Ideen gefragt. Damit fühlte ich mich ignoriert.