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, 19924 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Netzwerkgrundlagen
IPsec - .conf und .secret erstellen aus Gruppe und User (16)

Frage von MaxMLe zum Thema Netzwerkgrundlagen ...

RedHat, CentOS, Fedora
gelöst Erstellen von Desktopverknüpfungen und Anpassung der Taskleiste (2)

Frage von honeybee zum Thema RedHat, CentOS, Fedora ...

Vmware
ESXI Template erstellen (2)

Frage von Phill93 zum Thema Vmware ...

Batch & Shell
Ordner erstellen ll Datei hinein kopieren (1)

Frage von heyalice zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Microsoft
Ordner mit LW-Buchstaben versehen und benennen (19)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...