Filter eine Listview mit combobox, in vb.net
Was ich will, ist meist zu verbergen arrays nicht requeries. Also ich habe eine combobox und listbox mit Werten aus der Datenbank erfolgt durch adapter , dataset , datatable und verbindliche Quelle. . ALSO, wenn die person, ändern Sie den Kombinationsfeld-Werte, die Sie würde die Liste filtern .So lässt sagen combobox ist mit der ID, so dass die Liste Ansicht zeigt die Zeilen mit id. Onload die listview zeigt alle Eigenschaften . So wie tun Sie dies ohne Requery ???? Also unten habe ich das Auffüllen von list-und combobox-Teil.
hier ist ein link, aber nicht sehr hilfreich
VB.NET Listview mit Mehreren Spalten Filter
Dim listcount As Integer = listview1.Columns.Count
With listview1
.Columns.Clear()
.View = View.Details
.GridLines = True
.Columns.Add("Name").Width = 70
.Columns.Add("ID").Width = 60
.Columns.Add("Number").Width = 90
End With
Try
strQuery = "Select * From Table"
DB.Connection = New SqlConnection(strConnection)
DB.Connection.Open()
' add a daaset
Adapter = New SqlDataAdapter(strQuery, DB.Connection)
ListRS = New DataSet
Adapter.Fill(ListRS)
Dim table As DataTable = ListRS.Tables(0)
bnsrc = New BindingSource
bnsrc.DataSource = ListRS.Tables(0)
combobox1.DataSource = bnsrc
combobox1.DisplayMember = "ID"
combobox1.ValueMember = "ID"
combobox1.AutoCompleteSource = AutoCompleteSource.ListItems
Listview1.Items.Clear()
DB.Connection.Close()
Also, wenn ich wir zu tun requery es wäre das gleiche, ust die sql-Anweisung ändern .
strQuery = "Select * from Table Where ID=@id"
WENN ich einen parameter wie auch immer, es würde die Wirkung der combobx, weil Sie mit den gleichen Abfragen.
Der einzige code, den ich habe, ist das Teil Auffüllen. Eigentlich habe ich keine Ahnung, wie Filterung , wie zu Beginn. Möchtest du, dass ich post das füllen der combo-box und list?? @CarlosLanderas
ID ist einmalig hier, das heißt, es zeigt nur EINE Zeile wenn gefunden, oder es ist keine einzigartige Bedeutung mehr als einer Zeilen gezeigt werden konnte?
OK, mein Englisch ist nicht wirklich gut, also pls korrekter mich, wenn ich mich Phrasierung es falsch. Die select-Anweisung ist nicht wirklich, wie das Beispiel. Es ist inner join und group by in der Anweisung. Also die Abfrage ist eigentlich eine Ansicht. In diesem Formular kann der Benutzer nur ansehen und nichts tun, damit abfiltrieren könnte, tun gut für Sie
InformationsquelleAutor shaik ibrahim | 2013-07-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aufgefüllt werden kann
Listview1
auf dieSelectedIndexChanged
Fallecomboxbox1
durch hinzufügen der Elemente, die Sie wollen, zu jeder Zeit. Beispiel:Mit dem code von oben, bekommen Sie das derzeit ausgewählte Element in
combobox1
(curSelectionCombobox
) und auch iterieren durch alle Elemente aus der Datenbank abgerufen und entscheiden (auf der Rechnung, den gegebenen Zustand) welche sollte/sollte nicht Hinzugefügt werden. Damit dieser Ansatz verwendet keine Filterung, sondern führt eine from-scratch-addition von Elementen jedes mal, wenn die Auswahl dercombobox1
änderungen.Wenn Sie möchten, führen Sie die "filtern", nur bei load von form1
Wenn Sie möchten, ändern Sie die Elemente in der Listview1 zur Laufzeit basierend auf verschiedenen Bedingungen, sollten Sie sich auf Bedienelemente ermöglichen multiselektion (z.B. Checkboxen). Beispiel-code:
So, die Idee ist nicht hinzufügen, alle Objekte auf die Listbox1 und dann filtern, sondern nur das hinzufügen der Elemente, die Sie wollen. Wo Stelle ich "Zustand" aufrufen Sie können eine Funktion durchführen wie komplexe Prüfungen, wie Sie wollen.
Warum C#?! Dies ist VB.NET. Diese Funktion wird jedesmal aufgerufen, wenn der index ausgewählt, in combobox1 geändert wird (wenn Sie doppelklicken Sie auf die Bezeichnung "combobox1" auf der designer-Ansicht mit dieser Funktion werden automatisch generiert). Sie bekommen den genauen Wert in die variable curSelectionCombobox. Warum nicht Sie diese Lösung implementieren, zu testen und zu verstehen, was genau das tut?
theres ein Semikolon am Ende des listview1.Element.hinzufügen . ich möchte die filter von rund 100+ items. Dein code fügt Einfach ein Element und es nicht klar. Und ich spreche über 10 von diesen 100+ Elemente mit der gleichen id. Wenn ich dies tun, ist es noch 1 Punkt. Der code, den ich in meinem problem ist das laden der form. So Laden der form wird Dies mit der Anzeige.
Ah! Sorry, ein Tippfehler :)... Mein code nicht fügen Sie ein Element hinzu. Es fügt alle Elemente, die Sie wollen. Dieser code WIRD AUFGERUFEN, wenn der Benutzer wählt einen anderen combobox1 Element (Sie können nur wählen Sie eine combobox-Elements an die Zeit). Wenn Sie möchten, wählen Sie verschiedene Elemente an der gleichen Zeit, sollten Sie sich nicht darauf verlassen, combobox, aber auf Checkboxen, zum Beispiel; und diese haben auch die zugeordneten Ereignisse. Wenn Sie nicht wollen, zu aktualisieren, Listen zur Laufzeit zu können, sollte man Ihre Konditionen beim Auffüllen der Listview1 bei form load. Ich werde zu aktualisieren meinem code berücksichtigt all diese Eventualitäten.
Ich werde es mal ausprobieren und sehen, wie es funktioniert ! (: danke für deine Mühe ich werde Euch wissen lassen ob es funktioniert.
InformationsquelleAutor varocarbas