| |
VB.NET - Ein- und UmsteigerDataGridView-Probleme... | | | Autor: Legend_X | Datum: 19.07.14 17:08 |
| Ich hab eine DataGridView, die 3 Spalten haben soll. Ich
füge die Header hinzu:
gridview.Columns(0).Name = "Index"
gridview.Columns(1).Name = "Name"
gridview.Columns(2).Name = "Typ" Jetzt habe ich die Header + eine leere Zeile. Sagen
wir mal, ich hab zehn Listen-Einträge, also füge ich
zu der bereits vorhandenen leeren zeile noch neun
hinzu:
gridview.Rows.Add(9) Dann schreib ich Daten in die vorhandenen 10 leeren
Zeilen, z.B. so:
for x = 0 to 9
gridview.Rows(x).Cells(0).Value = "Text für Feld 1"
gridview.Rows(x).Cells(1).Value = "Text für Feld 2"
gridview.Rows(x).Cells(2).Value = "Text für Feld 3"
next Und schließlich noch ein Update des GridView:
gridview_1.Update() Das gibt einen GridView mit Header + 10 ausgefüllten Zeilen.
Mein Problem ist die LETZTE Zeile. Beim Sortieren (Klick auf
Spalten-Header) scheint sie immer ausgeschlossen zu werden,
und wenn ich versuche sie zu löschen (z.B. weil ich sie beim
manuellen Sortieren an anderer Stelle wieder einfügen will),
kommt folgender Fehler:
"Die neue Zeile, für die kein Commit durchgeführt
wurde, kann nicht gelöscht werden."
Ich bitte um Hilfe...
Beitrag wurde zuletzt am 19.07.14 um 17:08:29 editiert. | |
Re: DataGridView-Probleme... | | | Autor: effeff | Datum: 19.07.14 18:31 |
| Du liegst daneben. Du musst den Inhalt nicht dem DatagridView zufügen, sondern einer DataTable, die Du dann dem DatagridView als Datensource zuweist. Das DGV ist nur ein Instrument, um die Daten einer Table anzuzeigen.
EALA FREYA FRESENA | |
Re: DataGridView-Probleme... | | | Autor: Kuno60 | Datum: 19.07.14 19:15 |
| Hallo LegendX,
wenn du für 10 Zeilen Texte den Zellen hinzufügst, musst du auch 10 Zeilen hinzufügen, also:
gridview.Rows.Add(10) Wenn du keine neuen Zeilen direkt im DGV hinzufügen willst, sondern nur die vorhandenen Zeilen bearbeiten willst, so setze die Eigenschaft "AllowUserToAddRows" auf "False".
| |
Re: DataGridView-Probleme... | | | Autor: Manfred X | Datum: 19.07.14 19:16 |
| Beachte, worauf effeff hingewiesen hat.
Ansonsten liegen einige Mißverständnisse bei Dir vor.
Das Erstellen von Headern erzeugt keine Zeile.
Die Standardeinstellung des Grid ermöglich aber das
Anfügen von Zeilen durch den Benutzer (=Anzeige einer noch
zu erstellenden Edit-Zeile).
Dieses Verhalten kann man abschalten.
Public Class frmDGV
Dim dgv As New DataGridView With {.Parent = Me}
Private Sub frmDGV_Load(sender As System.Object, _
e As System.EventArgs) Handles MyBase.Load
With dgv
.AllowUserToAddRows = False
With .Columns
.Add("Index", "index")
.Add("Name", "Name")
.Add("Typ", "Typ")
End With
.Rows.Add(10)
For rowindex As Integer = 0 To 9
.Rows(rowindex).Cells(0).Value = _
"Zeile " & rowindex.ToString & " Spalte " & 0.ToString
.Rows(rowindex).Cells(1).Value = _
"Zeile " & rowindex.ToString & " Spalte " & 1.ToString
.Rows(rowindex).Cells(2).Value = _
"Zeile " & rowindex.ToString & " Spalte " & 2.ToString
Next
End With
End Sub
End Class | |
Re: DataGridView-Probleme... | | | Autor: Kuno60 | Datum: 19.07.14 19:28 |
| Nein effeff, das DataGridView muss nicht an eine Datenquelle gebunden sein!
Man kann es auch direkt verwenden und Zeilen und Daten manuell hinzufügen.
Das DGV kann mit folgenen Moden verwendet werden:
1. Direkt Datengebunden
2. Datengebunden über BindingSource
wobei die Datenquelle nicht unbedingt eine DataTable sein muss. Es kann an jede Datenquelle gebunden werden, die IList implementiert.
3. Ungebunden
Spalten und Zeilen mit Columns.Add() und Rows.Add() hinzufügen.
4. Virtueller Modus
Dabei holt sich das DGV die Daten direkt aus einer beliebigen Datenquelle.
| |
Re: DataGridView-Probleme... | | | Autor: Manfred X | Datum: 19.07.14 19:56 |
| Hallo Kuno!
Rein technisch gesehen hast Du Recht,
aber in diesem Forum wird auf der Trennung von Datenquelle und
Benutzeroberfläche Wert gelegt.
Viele Editier-Vorgänge und andere Datenmanipulationen lassen sich
dann wesentlich einfacher durchführen. (Das Net-Framework ist zudem
in Eigenschaften, Methoden und Verhalten der Controls darauf "ausgelegt").
| |
Re: DataGridView-Probleme... | | | Autor: Kuno60 | Datum: 19.07.14 20:32 |
| Hallo Manfred,
ich verwende auch nur Datenbindung über BindingSource. Das ist beste Wahl und am einfachsten, aber auch die langsamste Methode.
Der ungebundene Modus eignet sich fast nur für DGV's, die man nur zum Anzeigen von Daten verwendet.
Das DGV ist ein sehr mächtiges Steuerelement und es bietet auch im ungebundenen Modus Möglichkeiten, die man im gebundenen Modus nicht hat.
Es kommt immer darauf an, was man machen will und jeder Modus hat seine Vor- und Nachteile. | |
Re: DataGridView-Probleme... | | | Autor: Manfred X | Datum: 19.07.14 22:20 |
| Es geht in diesem Zusammenhang nicht darum, wie mächtig bzw. vielseitig einsetzbar
das Datagridview-Control ist, sondern um die Trennung der Windows-Formulare von den
Datenklassen - also um die zweckmäßige Strukturierung von Programmen.
Überträgt man die Daten (zur Anzeige) aus einer Datenquelle in ein ungebundenes Grid,
führt das im Programm gewöhnlich zu einer doppelten Datenhaltung.
http://msdn.microsoft.com/de-de/library/cd28yf6d%28v=vs.110%29.aspx
| |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|