Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

DataTable aus DataGridView Erstellen

Frage Entwicklung VB for Applications

Mitglied: MultiStorm

MultiStorm (Level 1) - Jetzt verbinden

07.06.2010, aktualisiert 16:37 Uhr, 20996 Aufrufe, 6 Kommentare

Möchte aus einem DataGridView ein DataTabele erstellen. (VB.NET 2008)

Hallo alle zusammen,
gibt es ne möglichkeit aus einem DataGridView ein DataTabele zu erstellen ?
Mir ist klar das ich das sicher über Schleifen usw. Kapieren kann aber gibt es da nicht ein .NET Hausmittel dafür ...
bin eigentlich kein großer Fan von diesen Schleifen Kopier Geschichten ...

Habe im internet folgendes Gefunden:

How to get a DataSet from DataGrid
http://social.msdn.microsoft.com/Forums/en/adodotnetdataset/thread/0a8c ...

aber leider werde ich aus dem was die Schreiben nicht wirklich schlau. Allerdings scheint es hier funktioniert zu haven --> Rahtlosigkeit
Hat jemand da eine Idee ?
Mitglied: 14695
07.06.2010 um 16:46 Uhr
Hi,

nicht das ich wüsste. Aber warum erstellst du nicht eine DataTable und legst die DataGridView.DataSource-Eigenschaft entsprechend fest.

Ansonsten kommst du wohl um deine gehassten Schleifen nicht herum (Beispiel für ein DGV mit einer Spalte):

01.
DataGridViewRowCollection coll = dataGridView1.Rows; 
02.
 
03.
DataTable t = new DataTable(); 
04.
t.Columns.Add(); 
05.
foreach (DataGridViewRow item in coll) 
06.
07.
     t.Rows.Add(item.Cells[0].Value);	 
08.
}
Bitte warten ..
Mitglied: 14695
07.06.2010 um 16:54 Uhr
Nochmal ich, nachdem du deinen Beitrag erweitert hast.

Scheinbar fehlen Dir grundlegende Kenntnisse zum DataGridView und der Darstellung von Daten darin. Lies mal das hier DataGridView.DataSource. Das hilft bestimmt weiter.

Grüße
Bitte warten ..
Mitglied: MultiStorm
07.06.2010 um 17:08 Uhr
naja, weil einige spalten im Grid erst beim Füllen ermittelt bzw. berechnet werden, da hängen ein paar funktionen hinter die nicht per SQL realiesiert sind.
ist das C# was du gepostet hast ?

naja das mit der schleife ist eigentlich quatsch,
da das DT bzw. DS an eine Export Funktion übergeben werden soll und daort laufen wieder schleifen alles durch, ich denek ich werde mit für diese Funktion einfach eine Überladung schreiben und das Komplette Grid einfach übergeben
Bitte warten ..
Mitglied: MultiStorm
07.06.2010 um 17:16 Uhr
ja das war ja auch mein Erster gedanke:

Dim dt as DataTable

set dt = new DataTabel

dt = DataGridView.Datasource

Fertig !

Ha ha,
klapt aber nicht,
so wie cih aber den post von dir interpretiere sollte das so funktionieren

'Deklaration

Public Property DataSource As Object

'Verwendung

Dim instance As DataGridView
Dim value As Object

value = instance.DataSource

instance.DataSource = value


ein datatable ist doch auch nur ein Objekt ....

also was ist Falsch,
wenn ich das DT übergebe hat das dt = nothing ...

Funktioniert das vieleicht nur wenn das Gird auch über die DataSource eigenschaft gefüllt wurde ?
Den ich fülle das Gird per schleife wegen der zusätzlichen Berechnungen ..
Bitte warten ..
Mitglied: MultiStorm
07.06.2010 um 17:46 Uhr
Scheint so zu sein,
DataGridView.DataSource = Nothing ...
Scheint also nur zu Funzen, wenn es darüber auch gefüllt wurde.
Bitte warten ..
Mitglied: 14695
08.06.2010 um 09:20 Uhr
Hi,

1. Ja, das ist C#. Die Übersetzung von C# nach VB und umgekehrt sollte aber nicht soo ein großen Problem darstellen.
2. Nein, meinen Post hast du nicht richtig interpretiert:

Deine Frage war ob es eine Möglichkeit gibt "aus einem DataGridView eine DataTable zu erstellen". Dies habe ich mit dem Post beantwortet. Die Lösung wäre eine neue DataTable zu erstellen und diese mit der entsprechenden Anzahl von Spalten (wie im DataGridView) auszustatten und danach zeilenweise die Zellen des DataGridView in die DataTable zu kopieren.

Was du nicht erwähnt hattest (und auch nach wie vor nicht wirklich schreibst), dass du offenbar eine Datenquelle benutzt; s. u. "weil einige spalten im Grid erst beim Füllen ermittelt ... ein paar funktionen hinter die nicht per SQL realiesiert sind". Du müsstest also schon genauer sagen wo die Daten her kommen, die in deinem Grid dargestellt werden.

Es reicht nicht einfach eine "blanke" DataTable als Datenquelle anzugeben. Dein Grid "weiß" in diesem Fall ja nicht, was es machen soll! Deshalb ist deine Vermutung richtig, dass die DataTable nur verwendet wird, wenn sie vorher mit Spalten ausgestattet war. Nur dann kann das Grid die DataTable bedienen (s. hier):

01.
Dim table As DataTable = new DataTable("SomeData") 
02.
Dim column As DataColumn  
03.
Dim row As DataRow  
04.
  
05.
column = New DataColumn() 
06.
column.DataType = System.Type.GetType("System.String") 
07.
column.ColumnName = "Name" 
08.
 
09.
table.Columns.Add(column) 
10.
 
11.
dataGridView.DataSource = table
Wenn du deine DataTable wieder aus der DataSource "heraus holen" möchtest, musst du sie erst umwandeln (einfach table = ...DataSource klappt nicht). Zum Cast siehe z. B. hier:

01.
Dim table as DataTable = DirectCast(dataGridView.DataSource, DataTable)
Ich bin kein VBler, wenn der Code also nicht wirklich korrekt ist wundere dich nicht, pass ihn einfach an.

Soweit so gut.

Wenn deine Daten in dem Grid an eine Exportfunktion übergeben werden sollen: Was erwartet denn deine Exportfunktion? Die einfachste Variante wäre eventuell, die bereits angesprochene DataGridViewRowCollection zu übergeben und auszuwerten. Oder, wie du bereits meintest das komplette Grid.

Grüße
Bitte warten ..
Ähnliche Inhalte
Visual Studio
DataGridViewComboBoxColumn - DatagridView (2)

Frage von SachsenHessi zum Thema Visual Studio ...

Netzwerke
gelöst Wie erstelle ich ein Intranet (20)

Frage von Leonardnet zum Thema Netzwerke ...

Hyper-V
Kann keinen Prüfpunkt erstellen (2)

Frage von MAC-HC zum Thema Hyper-V ...

Neue Wissensbeiträge
Entwicklung

Exploit Development

Anleitung von burhanudinn123 zum Thema Entwicklung ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(1)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Netzwerkprotokolle
Leiten "dumme" Switches VLAN-Tags mit durch? (17)

Frage von coltseavers zum Thema Netzwerkprotokolle ...

E-Business
Wo tragt ihr eure privaten Termine ein? (13)

Frage von honeybee zum Thema E-Business ...

Batch & Shell
Batch zum suchen und verschieben von Verknüpfungen (12)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Windows Server
Terminalserver starten willkürlich neu (12)

Frage von thaefliger zum Thema Windows Server ...