DevTrain Startseite SharePoint Camp ? In 5 Tagen zum SharePoint Profi!  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

Forum: VB.NET | Thema: Re: ComboBox nach DisplayMember sortieren | Von: Holger Fleter ( 20.04.2004 00:11)

Hallo Simon,

erst mal Sorry, dass ich so lang nix mehr geschrieben habe.

Danke für Deine Tipps.

Das ist schon so, wie dachte das es gehen müßte, nur ich weiß nicht wie ich es mit der DataView

hinkriege.
Ich hab mir jetzt auf eine zwar unelegante aber einfache Art weitergeholfen.
Ich hänge an die Tabelle noch eine Spalte "Sortierfeld" an und kopiere vor dem Sortieren den Klartext

nachdem sortiert werden soll dahin. Siehe Funktion "Private Sub fill_sort()"

Mit dem Befehl:
DV.Sort = "Sortierfeld asc"
Ist die Reihenfolge im Formular, so wie ich es wollte.


Dazu der Code:

'Deklarationsteil
Private bm As BindingManagerBase
Private DS As DataSet

'Zwei Access-Tabellen werden aus einer Access-Datei geladen.
'Tabelle Item_Art
Private dtItem_Art As DataTable
Private daItem_Art As OleDbDataAdapter
Private cb1 As OleDbCommandBuilder

'Tabelle Einstufung
Private dtEinstufung As DataTable
Private daEinstufung As OleDbDataAdapter
Private cb2 As OleDbCommandBuilder

Dim myDVM As DataViewManager
Dim DV As DataView


Dim coStr As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=

D:\AK_Dokus\Biblioth\Ref_Daten\Item_Art.mdb"
Dim con As OleDbConnection = New OleDbConnection(coStr)


'Das Formular das die Daten anzeigt heißt


Private Sub Item_Art_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

MyBase.Load
data_load() 'Routine zum Laden der Daten

GridFormatieren()

'AddHandler Me.showSelectedButton.Click, AddressOf Me.showSelectedButton_Click

AddHandler C_Einstufung.DoubleClick, AddressOf Me.test

Timer1.Start()

AddHandler Me.Activated, AddressOf Me.test2
AddHandler Me.Deactivate, AddressOf Me.test3

End Sub

Private Sub data_load()
daItem_Art = New OleDbDataAdapter("SELECT * FROM Item_Art order by Item_Art_Deutsch", con)
daEinstufung = New OleDbDataAdapter("SELECT * FROM Item_Einstufung order by Item_Einstufung",

con)

dtItem_Art = New DataTable("Item_Art")
dtEinstufung = New DataTable("Item_Einstufung")

cb1 = New OleDbCommandBuilder(daItem_Art)
cb2 = New OleDbCommandBuilder(daEinstufung)

DS = New DataSet
DS.Tables.Add(dtItem_Art)
DS.Tables.Add(dtEinstufung)

Try
con.Open()
daItem_Art.MissingSchemaAction = MissingSchemaAction.AddWithKey
daEinstufung.MissingSchemaAction = MissingSchemaAction.AddWithKey

daItem_Art.Fill(dtItem_Art)
daEinstufung.Fill(dtEinstufung)

con.Close()
Catch ex As Exception
MessageBox.Show(ex.ToString)
con.Close()
End Try

dtItem_Art.Columns.Add("Sortierfeld") 'Das ist die Spalte, die mir beim Sortieren hilft

Try
DS.Relations.Add("Einstufung", DS.Tables("Item_Einstufung").Columns("Item_Einstufung_ID"),

DS.Tables("Item_Art").Columns("Item_Einstufung_ID")) 'Hier findet die Verknüpfung statt.
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try

myDVM = New DataViewManager(DS) 'DataView zum Anzeigen der Daten.

Dim myDVS As DataViewSetting
For Each myDVS In myDVM.DataViewSettings
myDVS.ApplyDefaultSort = True
Next

DataGrid1.SetDataBinding(myDVM, "Item_Art")
DV = myDVM.CreateDataView(DS.Tables("Item_Art"))
DataGrid1.DataSource = DV

bm = Me.BindingContext(DV)

Init_Einstufung()
T_Dati.DataBindings.Clear()
T_Dati.DataBindings.Add("Text", DV, "Dati")
T_Item_Art_D.DataBindings.Clear()
T_Item_Art_D.DataBindings.Add("Text", DV, "Item_art_Deutsch")
T_Item_Art_UK.DataBindings.Clear()
T_Item_Art_UK.DataBindings.Add("Text", DV, "Item_art_Englisch")

DV.Sort = "Item_Art_Deutsch"
CounterText()
End Sub


Private Sub fill_sort()
Dim a As Object
Dim cRow As DataRow
Dim cCol As DataColumn = dtItem_Art.Columns("Item_Einstufung_ID")

For Each cRow In dtItem_Art.Rows

a = cRow(cCol).GetType.ToString()

If Not (cRow(cCol).GetType Is System.DBNull.Value.GetType) Then
Try
cRow(dtItem_Art.Columns("Sortierfeld")) = Einstufung_as_string(cRow(cCol))
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End If
Next
End Sub

Private Function Einstufung_as_string(ByVal id As Integer) As String
Dim cRow As DataRow
For Each cRow In dtEinstufung.Rows
If cRow(dtEinstufung.Columns("Item_Einstufung_ID")) = id Then
Return (cRow(dtEinstufung.Columns("Item_Einstufung")))
Exit For
End If
Next
End Function


Beste Grüße
Holger







Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Advanced Developers Conference vom 14.-15. Februar 2011

© Copyright 2003 ppedv AG