vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Ein- und Umsteiger
Re: Suche nach Control 
Autor: Manfred X
Datum: 09.11.10 20:06

Hallo!

Hier eine ganz primitive, aber editierbare Lösung.
Die Tabelle wird intern in eine zweite umgesetzt und die
wird dann gebunden und bearbeitet. Nach Abschluss der
Editierarbeit, wird per GetTable-Methode die Ergebnistafel
in zurückgesetzter Form wieder abgefragt. Als Konstruktor-
Parameter wird die Zahl der Zeilen in der Anzeige übergeben.
Public Class clsTableBind2
    Implements System.ComponentModel.IBindingList
 
    Dim _dt As DataTable : Dim _verticalrows As Integer
    Dim _cols As Integer : Dim _dtv As DataTable
    Dim _dtvv As DataView
 
    Public Sub New(ByVal dt As DataTable, ByVal verticalrows As Integer)
        _dt = dt : _dtv = New DataTable
        _verticalrows = verticalrows : _cols = dt.Rows.Count \ _verticalrows
        If _dt.Rows.Count / _verticalrows > 0 Then _cols += 1
        'Spalten in der umgesetzten Tabelle erstellen
        For cl As Integer = 0 To _cols - 1
            For c As Integer = 0 To _dt.Columns.Count - 1
                _dtv.Columns.Add _
                (_dt.Columns(c).ColumnName + "_" & CStr(cl), _
                _dt.Columns(c).DataType)
            Next c
        Next cl
        'Zeilen in der umgesetzten Tabelle erstellen
        For r As Integer = 0 To _verticalrows - 1
            _dtv.Rows.Add(_dtv.NewRow)
        Next r
        'Daten umsetzen
        DataTransFer(True)
        _dtvv = New DataView(_dtv)
    End Sub
 
    Public Function GetTable() As DataTable
        DataTransFer(False)
        Return _dt
    End Function
 
    Public Sub DataTransFer(ByVal direction As Boolean)
        'Daten umsetzen
        Dim z As Integer = -1 'Tabellenzeilen
        For k As Integer = 0 To _cols - 1 'Kolonnen
            For i As Integer = 0 To _verticalrows - 1 'Anzeigezeilen
                If z < _dt.Rows.Count - 1 Then
                    z += 1
                    For l As Integer = 0 To _dt.Columns.Count - 1 _
                      'Tabellenspalten
                        If direction Then
                            _dtv.Rows(i).Item(k * _dt.Columns.Count + l) = _
                                _dt.Rows(z).Item(l)
                        Else
                            _dt.Rows(z).Item(l) = _
                                _dtv.Rows(i).Item(k * _dt.Columns.Count + l)
                        End If
                    Next l
                End If
            Next i
        Next k
    End Sub
 
    Default Public Property Item(ByVal index As Integer) As Object _
        Implements System.Collections.IList.Item
        Get
            Return _dtvv(index)
        End Get
        Set(ByVal value As Object)
        End Set
    End Property
 
    Public ReadOnly Property Count As Integer Implements _
      System.Collections.ICollection.Count
        Get
            Return _verticalrows
        End Get
    End Property
 
    'Die restlichen Bestandteile der Schnittstellen benötigen
    'keinen Code
end class
 
'Anwendungsbeispiel
Public Class frmTableCol
    Dim dt As New DataTable
 
    Private Sub frmTableCol_Load(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load
        dt.Columns.Add("Zeile", GetType(Integer))
        dt.Columns.Add("Integer", GetType(Integer))
        dt.Columns.Add("String", GetType(String))
        For i As Integer = 0 To 300
            Dim r As DataRow = dt.NewRow
            r.Item(0) = i : r.Item(1) = i * i - i : r.Item(2) = "Zeile " + CStr( _
              i)
            dt.Rows.Add(r)
        Next i
        DataGridView1.DataSource = New clsTableBind2(dt, 10)
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, _
                ByVal e As System.EventArgs) Handles Button1.Click
        'Abfrage der editierten Tabelle
        DataGridView2.DataSource = CType(DataGridView1.DataSource, _
          clsTableBind2).GetTable
    End Sub
End Class


Beitrag wurde zuletzt am 09.11.10 um 20:09:04 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Suche nach Control1.504bauer08.11.10 20:34
Re: Suche nach Control897Manfred X08.11.10 21:37
Re: Suche nach Control868bauer08.11.10 22:01
Re: Suche nach Control835Manfred X08.11.10 22:22
Re: Suche nach Control838Manfred X09.11.10 06:36
Re: Suche nach Control842bauer09.11.10 14:55
Re: Suche nach Control945Manfred X09.11.10 15:09
Re: Suche nach Control856bauer09.11.10 16:23
Re: Suche nach Control1.025Manfred X09.11.10 16:49
Re: Suche nach Control1.002bauer09.11.10 17:57
Re: Suche nach Control784Manfred X09.11.10 20:06
Re: Suche nach Control1.019ModeratorDaveS09.11.10 17:58
Re: Suche nach Control820bauer10.11.10 12:21
Re: Suche nach Control789ModeratorDaveS10.11.10 13:18
Re: Suche nach Control867bauer10.11.10 14:40
Re: Suche nach Control918ModeratorDaveS10.11.10 14:46
Re: Suche nach Control832bauer10.11.10 14:51

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-2025 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