2016-04-27 20 views
0

こんにちは、私は高度な検索フィルタが必要なホームファインダープロジェクトに入っています。それは3つのドロップダウンリストを持っている必要がありますどこからユーザーが賃貸料の金額、場所、性別の種類を選択することができますまたはユーザーはまた、データベースに格納されているすべての家を表示するデフォルト値 "ドロップダウンリストから1つまたは2つの値を他のデフォルト値 "ALL"で選択するか、3つの値すべてに値がある場合は、それらの和集合につながるはずです。私はifステートメントを使って試しました。マルチプルドロップダウンリストを使用してC#で高度な検索を行う

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") 
{ 
} 

などこれまで考えていたコードです。どのようにすればいいのですか?私がRentamountと1st Streetの下で500を選択したように、1st Streetにある家賃を500とすると、どのように家を見つけることができますか?

そして、私はすでに家を見せる方法を知っています。私の心配はちょうどドロップダウンリストの項目の交差点を見つける方法です。

あなたからの助けが必要です。ありがとうございます

+0

あなたはSql Serverに対して検索を実行していますか?その場合、検索ボタンをクリックした後にそのイベントに入り、ストアドプロシージャに3つのボックスの値を渡して、単純に 'IS NULL'チェックに基づいた単純な選択を作成するという簡単な方法を書いてくださいストアドプロシージャやコードでは、ステートメントや 'ALL'キーワードを扱う条件がある場合に使用します。 'LIKE'キーワードを使い、SQL WILDCARDS%%'を理解する方法と使い方を調べてください。 – MethodMan

+0

これでうまくいきます。ありがとうございました。 – user6079070

答えて

0

あなたはデータアクセスをどのようにしているかによって異なりますが、これはLinqのほうがはるかに簡単で清潔です。 Linq2SQLまたはEntity Frameworkを使用していて、データベースにHomesという名前のテーブルがあるとしたら、ctxという名前の変数でEFコンテキストにアクセスできる場合は、このようなことができます(警告:Airコード、最初の行にhomes変数がL2S/EFは、実際にはまだデータベースを照会しないことを意味し、unenumeratedクエリであること)より意味のあるものに...

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(); 

注意。ユーザーが3つのコンボを選択し、ユーザーが何かを選択した場合は、そのクエリーを変更します。 homesを列挙すると、クエリが実行され、必要な結果が得られます。

+0

ええと、私はまだデータベースに新しいですが、私は作業して検討します。ありがとうございました。 – user6079070

関連する問題