Ich habe ein typisertes Dataset und wollte eine Tabelle nach 2 Spalten sortieren.
Die Tabelle muß sequenziell gelesen werden um ein Treeview aufzubauen.Die erste Sortierspalte enthält dazu die Verzeichnistiefe und die 2. eine Sortierung innnerhalb der gleichen Ebene.
Wie bewerkstellige ich das am effektivsten ?
Tabelle.defaultviewsort srrgt zwar dafür das die Zeilen in einem Steuerelement richtig sortiert angezeigt werden, aber beim Durchlaufen der Zeilen hat es keinen Einfluß.
Bei Tabelle.select habe ich bisher nur die Möglichkeit gefunden nach einer Spalte zu sortieren.
Die Tabelle muß sequenziell gelesen werden um ein Treeview aufzubauen.Die erste Sortierspalte enthält dazu die Verzeichnistiefe und die 2. eine Sortierung innnerhalb der gleichen Ebene.
Wie bewerkstellige ich das am effektivsten ?
Tabelle.defaultviewsort srrgt zwar dafür das die Zeilen in einem Steuerelement richtig sortiert angezeigt werden, aber beim Durchlaufen der Zeilen hat es keinen Einfluß.
Bei Tabelle.select habe ich bisher nur die Möglichkeit gefunden nach einer Spalte zu sortieren.
VB.NET-Quellcode
- Private _dtOE As dsMA_Rechner.tbl_OrgstrukturDataTable
- Public Property dtOE As dsMA_Rechner.tbl_OrgstrukturDataTable
- Get
- Return _dtOE
- End Get
- Set(ByVal value As dsMA_Rechner.tbl_OrgstrukturDataTable)
- _dtOE = value
- End Set
- End Property
- Public Sub AufbautvwOE()
- Me.tvwOE.Nodes.Clear()
- Dim dtrowsOE() As dsMA_Rechner.tbl_OrgstrukturRow
- Dim node As TreeNode
- Dim nodes As TreeNode()
- Dim subNode As TreeNode
- Dim dtrowOE As dsMA_Rechner.tbl_OrgstrukturRow
- dtOE.DefaultView.Sort = dtOE.ID_OrgEbeneColumn.ColumnName.ToString & "," & dtOE.SortColumn.ColumnName.ToString
- dtrowsOE = DirectCast(dtOE.Select("ID_Orgstruktur>0", dtOE.ID_OrgEbeneColumn.ColumnName.ToString), dsMA_Rechner.tbl_OrgstrukturRow())
- Me.DataGridView1.DataSource = dtOE
- For Each dtrowOE In dtrowsOE
- If dtrowOE.IsuebergeordnetNull Then
- node = New TreeNode
- node.Name = "OE#" & dtrowOE.ID_Orgstruktur.ToString
- node.Text = dtrowOE.OrgStruktur
- Me.tvwOE.Nodes.Add(node)
- Else
- nodes = Me.tvwOE.Nodes.Find("OE#" & dtrowOE.uebergeordnet.ToString, True)
- If nodes.Count > 0 Then
- node = nodes.First
- subNode = New TreeNode(dtrowOE.ID_Orgstruktur.ToString)
- subNode.Name = "OE#" & dtrowOE.ID_Orgstruktur.ToString
- subNode.Text = dtrowOE.OrgStruktur.ToString
- node.Nodes.Add(subNode)
- Else
- MessageBox.Show("übergeordneter Knoten zu " & dtrowOE.OrgStruktur.ToString & " ID=" & dtrowOE.ID_Orgstruktur & " abhängig von " & dtrowOE.uebergeordnet & " fehlt")
- Exit Sub
- End If
- End If
- Next
- Me.tvwOE.ExpandAll()
- End Sub
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Schoofi“ ()