2016-04-27 13 views
0

Hallo Ich bin in einem Homefinder-Projekt, das einen erweiterten Suchfilter haben sollte. Es sollte 3 Dropdown-Liste haben, wo der Benutzer mieten Betrag, Standort und Geschlecht auswählen kann oder der Benutzer kann auch nicht auswählen, weil es den Standardwert "ALL" hat, was dazu führt, dass alle Häuser in der Datenbank gespeichert, aber wenn der Benutzer wählt einen oder zwei Werte aus der Dropdown-Liste mit dem anderen Standardwert als "ALL", oder alle drei haben Werte, es sollte zu der Vereinigung von ihnen führen. Ich habe versucht, zu verwenden, wenn AussagenErweiterte Suche in C# mit Multiple Dropdownliste

If (combobox1.text == "ALL" && combobox2.text == "ALL" && combobox3.text == "ALL") 
{ 
// shows all the homes 
} 
else if (combobox1.text != "ALL" && combobox2.text == "ALL" && combobox3.text == "ALL") 
{ 
// say combobox1 is rent amount, shows all the homes having that rent amount 
} 

else if (combobox1.text == "ALL" && combobox2.text != "ALL" && combobox3.text == "ALL") 
{ 
    // say combobox2 is gender type shows all the homes having that  gender category 
    if (combox2.text == "Female") 
    // all homes w "female" 
    else 
    // all homes w male 
} 

else if (combobox1.text == "ALL" && combobox2.text == "ALL" && combobox3.text != "ALL") 
{ 
// say combobox3 is location, shows all homes in that location 
} 

else if (combobox1.text != "ALL" && combobox2.text != "ALL" && combobox3.text != "ALL") 
{ 
} 
else if (combobox1.text != "ALL" && combobox2.text != "ALL" && combobox3.text == "ALL") 
{ 
} 

und so weiter, das ist der Code Ich dachte bisher: l wie kann ich die Schnittstelle zwischen ihnen zu machen. Wie wenn ich 500 unter Rentamount und 1st Street unter Standort wähle, wie kann ich die Häuser mit 500 als Mietbetrag finden, der in der 1st Street liegt?

Und übrigens, ich weiß schon, wie man Häuser zeigt. Meine Sorge ist nur, wie man die Schnittpunkte der Artikel in der Dropdown-Liste findet.

Jede Hilfe von Ihnen ist appreaciated. Danke

+0

führen Sie Ihre Suche gegen Sql Server ..? Wenn ja, dann schreibe eine einfache Methode, die nach dem Klicken auf die Suchschaltfläche in dieses Ereignis eintritt und dann die Werte der 3 Felder an eine gespeicherte Prozedur übergeben kann, die eine einfache Auswahl basierend auf der "IS NULL" -Kontrolle erzeugt als Sie vielleicht denken .. und in der Stored-Prozedur oder Code würden Sie Fall wenn Anweisung verwenden oder wenn Bedingungen, um das 'ALL' Schlüsselwort zu behandeln. Schauen Sie auch, wie Sie das Schlüsselwort 'LIKE' verwenden und verstehen Sie die SQL WILDCARDS%%' und wie Sie sie verwenden – MethodMan

+0

Ok, ich werde daran arbeiten. Vielen Dank. – user6079070

Antwort

0

Hängt davon ab, wie Sie Ihren Datenzugriff tun, aber das wäre viel einfacher und sauberer mit Linq. Angenommen, Sie verwenden Linq2SQL oder Entity Framework und hätten in Ihrer Datenbank eine Tabelle mit dem Namen Homes. Wenn Sie Zugriff auf den EF-Kontext in einer Variablen mit dem Namen ctx hätten, könnten Sie so etwas tun (Warnung: Luftcode und ich habe Ihre Combobox1 umbenannt) um etwas Sinnvolles) ...

var homes = ctx.Homes; 
if (cmbRentAmount.Text != "All") { 
    homes = homes.Where(h => h.RentAmount == cmbRentAmount.Text); 
} 
// Similar for the other two combos 
// ... 
// Now we enumerate the query, which does the actual database access 
var homesList = homes.ToList(); 

Beachten Sie, dass die homes Variable in der ersten Zeile eine unenumerated Abfrage ist, was bedeutet, dass L2S/EF tatsächlich die Datenbank noch nicht abgefragt werden. Sie gehen durch Ihre drei Combos und ändern die Abfrage, wenn der Benutzer etwas ausgewählt hat. Wenn Sie homes aufzählen, führt es die Abfrage aus und gibt Ihnen die gewünschten Ergebnisse.

+0

Hmm, ich bin noch neu in der Datenbank, aber ich werde daran arbeiten und darüber nachdenken. Vielen Dank. – user6079070