dataGridView aktuelle Zeile ausgeben...
-
Hi,
ich möchte die aktuell markierte Zeile eines dataGridView Objekts in ein leeres dataGridView Objekt übernehmen. Wie stelle ich das an? Ich denke mal mit
->currentRow, aber ich bekomme nur ein dataGridViewCollection Objekt zurückgegeben, welches ich dann aber mit keiner mir bekannten Funktion in das neue dataGridView Objekt adden kann.
Kann mir jemand einen Tip geben?Ausserdem möchte ich die Daten der Zellen die der ausgewählten Zeile angehören
nacheinander in einem array<String^> speichern. Leider kann ich nur mittels
->currentCell->getValue() den Wert der aktuell markierten Zelle abrufen. Die
restlichen Zellen bleiben mir verwehrt.Unter ->currentRow kann ich kein Value Wert abrufen...
Ich hoffe ich habe mich einigermassen verständlich ausgedrückt
Hab in der MSDN Datenbank zwar einiges an Informationen gefunden, konnte mein Problem bisher noch nicht regeln.
Danke für euer Interesse,
Dappeljuh
-
Wie Du die in die GridView bekommst, hängt ein wenig davon ab,
wie die zweite GridView zustande kommt.Ist die vorbereitet einen spezifischen Datensatz aufzunehmen oder müssen die Zellen noch angepasst werden vor dem hinzufügen ?
currentRow liefert Dir eine DataGridViewRow zurück, keine Collection.
Diese kennt wiederum die Eigenschaft Cells, die Dir eine Auflistung der Zellen gibt.
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { DataGridViewRow ^ row = dataGridView1->CurrentRow; int index = dataGridView2->Rows->Add(); DataGridViewRow ^ row2 = dataGridView2->Rows[index]; for each (DataGridViewCell ^ cell in row->Cells) row2->Cells[cell->ColumnIndex]->Value = cell->Value; }
Mit dem Zugrundeliegenden Daten - oder mit einem DataView verknüpft - lässt sich das aber ggf. eleganter lösen. (Obriges Beispiel auf die schnelle, hab so noch keine Zeilen kopieren müssen)
-
zunächst einmal danke für deine Hilfe! Funktioniert wunderbar!
Ob man das eleganter lösen kann weiss ich nicht.
Ich kann dir ja mal grob meinen Vorgang erläutern:
Also ich habe eine Form1 in der ich unter anderem ein leeres DataViewGrid habe.
Diesem habe ich nur eine feste Anzahl Spalten zugewiesen. Mittels eines Events in dieser Form1 erzeuge ich eine neue Instanz einer anderen Form (Form2).
In dieser befindet sich ein weiteres DataGridView Objekt das mit den Werten einer xml Datenbank gefüllt wird. Mittels Maus markiere ich nun eine Zeile (CurrentRow) und schliesse dann die Form2. Anschliessend hole ich mir die Zeile mittels Property in Form1 und füge sie mit deiner for each Schleife in mein leeres DataGridView Objekt.Das ganze soll halt ein kleines Kassenprogramm werden...
Meinst du ich sollte das anders lösen?
Wie gesagt funktionieren tuts
-
Auf reiner DataGridView ebene hab ich auch keine andere Idee als die schleife.
Ich hab die an ein DataSet über ein Dataview gebunden und hab auf diesen Wege die Zeilen angefügt.
Eventuell schreibt noch jemand was dazu, wenn es um ein reines ungebundenes DataView geht.
(DataGridView)
-
Knuddlbaer schrieb:
Eventuell schreibt noch jemand was dazu, wenn es um ein reines ungebundenes DataView geht.
(DataGridView)
Ja es geht nur um ein ungebundenes DataGridView
-
sehr schön hilft mir sehr
jetzt eine frage: wenn mann verschiedene Zeile zum Beispiel mit einem Checkboxcolumn sortiet oder markiert hat ,wie kann mann sie alle auf einmal
in eines anders dataGridView übernehmen?
-
ich habe ein Beispiel gefunden aber es handelt sich hier um DB und ist in C# :
http://msdn2.microsoft.com/de-de/y8c0cxey(vs.80).aspx
-
nix
-
Naja, wo is mit dem c# Beispiel das Problem ?
-
dass ich kein C# kann
-
Ok, so viel Syntaxunterschiede gibt es in den Beispielen nicht, ich würd sagen: Versuch es doch einfach mal.
Beispiel:
private void Form1_Load(object sender, System.EventArgs e) { // Bind the DataGridView controls to the BindingSource // components and load the data from the database. masterDataGridView.DataSource = masterBindingSource; detailsDataGridView.DataSource = detailsBindingSource; GetData(); // Resize the master DataGridView columns to fit the newly loaded data. masterDataGridView.AutoResizeColumns(); // Configure the details DataGridView so that its columns automatically // adjust their widths when the data changes. detailsDataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; }
private void Form1_Load(System::Object ^ sender, System::EventArgs ^ e) { // Bind the DataGridView controls to the BindingSource // components and load the data from the database. masterDataGridView->DataSource = masterBindingSource; detailsDataGridView->DataSource = detailsBindingSource; GetData(); // Resize the master DataGridView columns to fit the newly loaded data. masterDataGridView->AutoResizeColumns(); // Configure the details DataGridView so that its columns automatically // adjust their widths when the data changes. detailsDataGridView->AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode::AllCells; }
-
Vielen Dank!!!
ich versuch's mal
-
es funktiuniert nicht bei mir weil ich die Daten direkt von dem USB Buffer nehme und in der DGV1 liste
-
keine neue idée???