15. marts 2004 - 18:33Der er
13 kommentarer og 1 løsning
Sortering i listview
Hvordan sorter man i listview. har prøvet at vælge "sorted" key =0 men den sorter godt nok colonne 1 , men der manger masse data i de andre colonner. kører jeg ikke sorteret er alle dataerne der.
her er koden jeg læser det ind med Private Sub Form_Load() ListView1.ListItems.Clear
Set Myconn = CreateObject("ADODB.Connection") Myconn.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ= " & App.Path & "\debitor.mdb" On Error Resume Next SQL = "Select * FROM deb" Set rs = Myconn.Execute(SQL) Do While Not rs.EOF ListView1.ListItems.Add (i + 1), , rs("Navn") ListView1.ListItems(i + 1).SubItems(1) = rs("Adr") ListView1.ListItems(i + 1).SubItems(2) = rs("adr2") ListView1.ListItems(i + 1).SubItems(3) = rs("postnr") ListView1.ListItems(i + 1).SubItems(4) = rs("by") ListView1.ListItems(i + 1).SubItems(5) = rs("tlf")
det må være noget der ligner det du skal bruge til at tilføje data med...... for ellers tilføjer den posterne på den samme plads da du ikke får i til at blive højere.......
Første gennemløb i det jeg har lavet sætter den ind på plads 0, andet gennemløb plads 1 og 3 gennemløb plads 2.....
I din første kode, hvis jeg tyder den rigtigt sætter den ind på plads 1 i første gennemløb (i + 1 giver 1) og det gør den sørme også i andet gennemløb da den ikke forhøjer i......
Løser det ikke problemet må du lige specificere ud
og så du en fejl jeg ved ikke om det er den der driller, men du har et rs der hedder "by"
DET MÅ DET IKKE for by er reseveret i VB.......så lige en nem lille regel jeg har lavet.......:O)
Når jeg laver følgende så ser det sådan her ud....: Variabel = varNavn Recordset = rsNavn Tabel = tblNavn Database = dbNavn osv......så forklare du indirekte i din kode hvad du arbejder med samt du sikre dig du ikke rammer reserverede ord.....
Her er en sorterings function fra msdn ved ikke om det kan hjælpe......
[Visual Basic] Imports System Imports System.Windows.Forms Imports System.Drawing Imports System.Collections
Namespace ListViewSortFormNamespace
Public Class ListViewSortForm Inherits Form
Private listView1 As ListView
Public Sub New() ' Create ListView items to add to the control. Dim listViewItem1 As New ListViewItem(New String() {"Banana", "a", "b", "c"}, -1, Color.Empty, Color.Yellow, Nothing) Dim listViewItem2 As New ListViewItem(New String() {"Cherry", "v", "g", "t"}, -1, Color.Empty, Color.Red, New Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular, GraphicsUnit.Point, CType(0, System.Byte))) Dim listViewItem3 As New ListViewItem(New String() {"Apple", "h", "j", "n"}, -1, Color.Empty, Color.Lime, Nothing) Dim listViewItem4 As New ListViewItem(New String() {"Pear", "y", "u", "i"}, -1, Color.Empty, Color.FromArgb(CType(192, System.Byte), CType(128, System.Byte), CType(156, System.Byte)), Nothing)
'Initialize the ListView control and add columns to it. Me.listView1 = New ListView
' Set the initial sorting type for the ListView. Me.listView1.Sorting = SortOrder.None ' Disable automatic sorting to enable manual sorting. Me.listView1.View = View.Details ' Add columns and set their text. Me.listView1.Columns.Add(New ColumnHeader) Me.listView1.Columns(0).Text = "Column 1" Me.listView1.Columns(0).Width = 100 listView1.Columns.Add(New ColumnHeader) listView1.Columns(1).Text = "Column 2" listView1.Columns.Add(New ColumnHeader) listView1.Columns(2).Text = "Column 3" listView1.Columns.Add(New ColumnHeader) listView1.Columns(3).Text = "Column 4" ' Suspend control logic until form is done configuring form. Me.SuspendLayout() ' Add Items to the ListView control. Me.listView1.Items.AddRange(New ListViewItem() {listViewItem1, listViewItem2, listViewItem3, listViewItem4}) ' Set the location and size of the ListView control. Me.listView1.Location = New Point(10, 10) Me.listView1.Name = "listView1" Me.listView1.Size = New Size(300, 100) Me.listView1.TabIndex = 0 ' Enable editing of the items in the ListView. Me.listView1.LabelEdit = True ' Connect the ListView.ColumnClick event to the ColumnClick event handler. AddHandler Me.listView1.ColumnClick, AddressOf ColumnClick
' Initialize the form. Me.AutoScaleBaseSize = New Size(5, 13) Me.ClientSize = New Size(400, 400) Me.Controls.AddRange(New Control() {Me.listView1}) Me.Name = "ListViewSortForm" Me.Text = "Sorted ListView Control" ' Resume layout of the form. Me.ResumeLayout(False) End Sub 'New
' ColumnClick event handler. Private Sub ColumnClick(ByVal o As Object, ByVal e As ColumnClickEventArgs) ' Set the ListViewItemSorter property to a new ListViewItemComparer ' object. Setting this property immediately sorts the ' ListView using the ListViewItemComparer object. Me.listView1.ListViewItemSorter = New ListViewItemComparer(e.Column) End Sub
End Class
' Implements the manual sorting of items by columns. Class ListViewItemComparer Implements IComparer
Private col As Integer
Public Sub New() col = 0 End Sub
Public Sub New(ByVal column As Integer) col = column End Sub
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _ Implements IComparer.Compare Return [String].Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text) End Function End Class End Namespace
Ellers tror jeg jeg vil vente med at komme med mere indtil jeg får installeret vb igen :O) har lige samlet min spand på ny og geninstalleret efter crash.......
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.