Benutzer mit den meisten Antworten
Auslesen von Daten aus DataGrid

Frage
-
Hallo zusammen.
Ich möchte nach einem Knopfdruck automatisiert Daten aus einem DataGrid auslesen und in einem PDF speichern. Folgendes habe ich mir zum Auslesen der Daten zusammengebastelt:
string cellvalue = ""; // Zellen werden nacheinander ausgelesen for (int k = 0; k < Zeilenanzahl; k++) { for (int l = 0; l < Spaltenanzahl; l++) { var col = myGrid.Columns[l] as DataGridColumn; var fc = col.GetCellContent(myGrid.Items[k]); cellvalue = (fc as TextBlock).Text; } }
Bis einschließlich k=9 funktioniert das ganze und ich bekomme die Tabelle in ein PDF. Für Werte darüber erhalte ich
"Ein Ausnahmefehler des Typs "System.NullReferenceException" ist aufgetreten.
Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."Ich verstehe jetzt aber nicht ganz warum das ganze bis einschließlich 9 noch funktioniert. Wie ließe sich das umgehen?
Antworten
-
Hi,
wenn Du den DataReader nutzt, dann kannst Du mit einer While-Schleife alle Datensätze geben lassen solange der Rückgabewert der Read-Methode true. Mit jedem Read bekommst Du einen Datensatz entsprechend SELECT Anweisung.--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks
Kommas richtig setzen!
Schüler sagen, Lehrer haben es gut.
Schüler, sagen Lehrer, haben es gut- Als Antwort markiert Max_925 Samstag, 12. Dezember 2015 12:00
Alle Antworten
-
Hi Maxi,
kann es sein, Dass Dein DataGrid für Hinzufügen konfiguriert ist? In diesem Fall wäre die letzte Zeile der Platzhalter für die hinzuzufügende Datenzeile, die natürlich leer ist.Besser ist es, gebunden zu arbeiten und die Daten aus der gebundenen Datenquelle zu lesen.
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks
Kommas richtig setzen!
Schüler sagen, Lehrer haben es gut.
Schüler, sagen Lehrer, haben es gut -
Das DataGrid ist eigentlich "ReadOnly". Wenn die Tabelle nicht mehr als 9 Zeilen aufweist auch jeder einzelne Datensatz ausgegeben... Erst wenn die Tabelle mehr Zeilen hat, werden nur die ersten 9 ausgegeben obwohl auch die weiteren Zeilen eigentlich nicht leer sind.
Das DataGrid bezieht seine Daten aus einer Access-Datenbank... Wenn ich die Daten also direkt aus der gebundenen Datenquelle lesen möchte, müsste ich mir für jede mögliche Zelle also eine eigene SQL-Abfrage zusammenstellen?
OleDbConnection con = new OleDbConnection(); con.ConnectionString = ConfigurationManager.ConnectionStrings["Connection"].ToString(); con.Open();OleDbCommand cmd = new OleDbCommand(); cmd.CommandText = "SELECT Spaltenname FROM[Tabelle] WHERE ID=Zeilennummer"; cmd.Connection = con; OleDbDataReader rd = cmd.ExecuteReader();
Wie würde man jetzt vom OldDbDataReader den Zelleninhalt beziehen können?
Bin da leider nicht so durchgestiegen.
-
Hi,
wenn Du den DataReader nutzt, dann kannst Du mit einer While-Schleife alle Datensätze geben lassen solange der Rückgabewert der Read-Methode true. Mit jedem Read bekommst Du einen Datensatz entsprechend SELECT Anweisung.--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks
Kommas richtig setzen!
Schüler sagen, Lehrer haben es gut.
Schüler, sagen Lehrer, haben es gut- Als Antwort markiert Max_925 Samstag, 12. Dezember 2015 12:00