私はさらに説明することができます、私は私のデータベースに多くの人がいます。行動計画を立てるために1対多数のオプションがある場合、私のページには行動計画を立てているすべての人が表示されます。私はまた、アクションプランを持っている人々のすべてをスローフィルタードロップダウンリストを持って...これはうまく動作します。ドロップダウンリストはうまく動作しますが、私が得ることができない部分は人名を持つドロップダウンリストフィルタがあることです(その人のためのすべてのアクションプランを見つけることです)。しかし、ドロップダウンリストはデータベース内のすべての名前を表示しますアクションプランを持っている人だけを表示するようにドロップダウンリストを制限する方法はありますか?この上のポストはすでに存在する場合ドロップダウンリストのオプションを有効なオプションのみに制限するにはどうすればよいですか?
申し訳ありません...私は見ていると見ているが、溶液に
おかげ
P.S.を見つけることができませんされていますこれは役立つかもしれない....とはい私はこれはこれはこれは基本的に、あなたのドロップダウンをするSQL質問の詳細です私のコントローラで
var predicate = PredicateBuilder.False<ACTION_PLAN>();
predicate = predicate.Or(p => p.COMPLETED != null);
// former borrower
if ((Request.Form["FORMER_BORROWER"] != null) && Request.Form["FORMER_BORROWER"] != "")
{
FormerBorrower = Request.Form["FORMER_BORROWER"];
ViewData["FORMER_BORROWER"] = new SelectList((from n in _db.Loans where (n.FORMER_BORROWER_NAME != null) select new { n.FORMER_BORROWER_NAME, FORMER_BORROWER_NAMEID = n.FORMER_BORROWER_NAME }).Distinct().ToList(), "FORMER_BORROWER_NAMEID", "FORMER_BORROWER_NAME", FormerBorrower);
predicate = predicate.And(p => p.Loan.FORMER_BORROWER_NAME == FormerBorrower);
}
else
{
FormerBorrower = "";
ViewData["FORMER_BORROWER"] = new SelectList((from n in _db.Loans where (n.FORMER_BORROWER_NAME != null) select new { n.FORMER_BORROWER_NAME, FORMER_BORROWER_NAMEID = n.FORMER_BORROWER_NAME }).Distinct().ToList(), "FORMER_BORROWER_NAMEID", "FORMER_BORROWER_NAME");
}
// current ownership entity
if ((Request.Form["CURRENT_OWNERSHIP_ENTITY"] != null) && Request.Form["CURRENT_OWNERSHIP_ENTITY"] != "")
{
CurrentOwnershipEntity = Request.Form["CURRENT_OWNERSHIP_ENTITY"];
ViewData["CURRENT_OWNERSHIP_ENTITY"] = new SelectList((from n in _db.DOM_CURRENT_OWNERSHIP_ENTITies select n).ToList(), "CURRENT_OWNERSHIP_ENTITY", "CURRENT_OWNERSHIP_ENTITY", CurrentOwnershipEntity);
predicate = predicate.And(p => p.Loan.DOM_CURRENT_OWNERSHIP_ENTITY.CURRENT_OWNERSHIP_ENTITY == CurrentOwnershipEntity);
}
else
{
CurrentOwnershipEntity = null;
ViewData["CURRENT_OWNERSHIP_ENTITY"] = new SelectList((from n in _db.DOM_CURRENT_OWNERSHIP_ENTITies select n).ToList(), "CURRENT_OWNERSHIP_ENTITY", "CURRENT_OWNERSHIP_ENTITY");
}
// responsible party
if ((Request.Form["RESPONSIBLE_PARTY"] != null) && Request.Form["RESPONSIBLE_PARTY"] != "")
{
ResponsibleParty = Request.Form["RESPONSIBLE_PARTY"];
ViewData["RESPONSIBLE_PARTY"] = new SelectList((from n in _db.ACTION_PLANs select n).ToList(), "RESPONSIBLE_PARTY", "RESPONSIBLE_PARTY", ResponsibleParty);
predicate = predicate.And(p => p.RESPONSIBLE_PARTY == ResponsibleParty);
}
else
{
ResponsibleParty = null;
ViewData["RESPONSIBLE_PARTY"] = new SelectList((from n in _db.ACTION_PLANs select n).ToList(), "RESPONSIBLE_PARTY", "RESPONSIBLE_PARTY");
}
// completed
if ((Request.Form["COMPLETED"] != null) && Request.Form["COMPLETED"] != "")
{
Completed = System.Convert.ToBoolean(Request.Form["COMPLETED"]);
ViewData["COMPLETED"] = new SelectList((from n in _db.ACTION_PLANs where (n.COMPLETED != null) select new { n.COMPLETED}).Distinct().ToList(), "COMPLETED", "COMPLETED", Completed);
predicate = predicate.And(p => p.COMPLETED == Completed);
}
else
{
Completed = System.Convert.ToBoolean(null);
ViewData["COMPLETED"] = new SelectList((from n in _db.ACTION_PLANs where (n.COMPLETED != null) select new { n.COMPLETED }).Distinct().ToList(), "COMPLETED", "COMPLETED");
}
// target date
if ((Request.Form["TARGET_DATE"] != null) && Request.Form["TARGET_DATE"] != "")
{
TargetDate = System.Convert.ToDateTime(Request.Form["TARGET_DATE"]).ToString("MM/dd/yyyy");
ViewData["TARGET_DATE"] = new SelectList((from n in _db.ACTION_PLANs select n).ToList(), "TARGET_DATE", "TARGET_DATE", TargetDate);
predicate = predicate.And(p => p.TARGET_DATE == Convert.ToDateTime(TargetDate));
}
else
{
TargetDate = "";
ViewData["TARGET_DATE"] = new SelectList((from n in _db.ACTION_PLANs select n).ToList(), "TARGET_DATE", "TARGET_DATE");
}
あなたはddlをすべての人のリストにバインドしていますか?バインドするデータソースをフィルタリングできないため、アクションプランを持つ人のみが含まれるようになる理由はありますか?これは、コードレイヤーまたはデータアクセスレイヤーのいずれかで行います。これは実装するのが簡単なはずです - おそらくコードサンプルはどこに詰まっているのかを特定するのに役立ちますか? –
ダビデは正しい...私たちがあなたのDDLをどのように埋もれようとしているのか分かっていれば、私たちはもっと助けてくれるでしょう。デイビッドが言ったことにピギーバックするだけで、LINQを使ってコレクションの結果をフィルタリングすることができます。あなたのDBをもう一度呼び出すだけで、結果をDDLなどにバインドすることができます。 DDL。 – jonnyb