vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: datagrid view insert zeile? 
Autor: Manfred X
Datum: 23.08.13 06:01

Hallo!

Wofür wird das gebraucht?

Werfe einen Blick auf die "InsertAt"-Methode der DatarowCollection.
http://msdn.microsoft.com/de-de/library/system.data.datarowcollection.insertat%28v=VS.80%29.aspx

Allerdings:

Man kann zwar auf die Zeilen in einer Datatable per Index zugreifen,
doch dieser Index sollte nicht als "absolute" Position herangezogen werden.
Meist erfolgt das Füllen per ADO aus einer Datenbank, wobei gewöhnlich
keine "klar definierte" Reihenfolge zustande kommt. Nicht alle Datatable-
Methoden liefern die Sätze in der gespeicherten Reihenfolge (s.o.)

Wenn eine bestimmte Reihung der Zeilen benötigt wird, ist es zweckmäßig,
diese Abfolge-Information in einer separaten (Ganzzahl-) Tabellenspalte zu
verwalten. Anhand des Inhalts dieser Spalte werden die Sätze sortiert
in der gewünschten Reihenfolge angezeigt.

Beim "Einfügen" eines Satzes muß diese Spalte aktualisiert werden, z.B. so:
Private Sub InsertRow(ByVal dt As DataTable, ByVal rowindex As Integer)
 
        If dt Is Nothing Then Throw New ArgumentException("Keine Tabelle")
        If Not dt.Columns.Contains("ID") Then Throw New ArgumentException( _
          "Keine ID-Spalte")
        If Not dt.Columns("ID").DataType.Equals(GetType(Integer)) Then
            Throw New ArgumentException("ID Spalte nicht vom Typ Integer")
        End If
 
        If rowindex < 0 Then rowindex = 0
        If rowindex > dt.Rows.Count Then rowindex = dt.Rows.Count
 
        'Werte in der ID-Spalte ab rowindex verschieben
        For i As Integer = 0 To dt.Rows.Count - 1
            Dim r As Integer = CType(dt.Rows(i)("ID"), Integer)
            If r >= rowindex Then
                r += 1
                dt.Rows(i).SetField("ID", r)
            End If
        Next i
 
        'neue Zeile anhängen und die zugehörige ID eintragen 
        Dim insertrow As DataRow = dt.NewRow
        insertrow.SetField("ID", rowindex)
        dt.Rows.Add(insertrow)
    End Sub
Diese Funktion erwartet als ersten Parameter eine Datatable mit ID-Spalte
und als zweiten Parameter die Position/ID der angehängten Zeile.
(Beim Löschen einer Zeile ist entsprechend zu verfahren.)

Eventuell könnte man einen "Index" (Dataview) bilden.
http://www.csvreader.com/posts/datatable_index.php

Die Select-Methode kann verwendet werden, um Sätze nach bestimmten (Spalten-)
Kriterien gefiltert bzw. sortiert abzurufen:
http://msdn.microsoft.com/en-us/library/zk13kdh0%28v=vs.71%29.aspx
Die abgefragten Sätze (Array) können in eine leere geklonte Datatable (Schema)
importiert werden.

"Select" arbeitet angeblich besonders effizient, wenn man die ID-Spalte als
Primärschlüssel festgelegt hat.
http://codingcramp.blogspot.in/2009/02/datatable-performance.html
















alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
datagrid view insert zeile?1.360tomyverb22.08.13 21:10
Re: datagrid view insert zeile?969Manfred X23.08.13 06:01
Re: datagrid view insert zeile?851tomyverb23.08.13 10:28

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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