ルックアップ テーブルに基づくクエリをドロップダウン リストに入力するのではなく、ルックアップからのすべてのレコードをデータソースとして取得し、クエリで見つかったレコードに単に「移動」する方法はありますか? ?
ありがとう
ルックアップ テーブルに基づくクエリをドロップダウン リストに入力するのではなく、ルックアップからのすべてのレコードをデータソースとして取得し、クエリで見つかったレコードに単に「移動」する方法はありますか? ?
ありがとう
ここで盗品を取っていますが、データベースからのオブジェクトのコレクションがあり (議論のために従業員としましょう)、そのコレクションのフィールドを入力するドロップダウンが必要なようです。これは Linq で実現できます。
var emps = from e in db.Employees
select e;
var ddlSource = emps.Select(x =>
new ListItem {
Text = x.LastName + ", " + x.FirstName,
Value = x.ID
};
次に、DropDownList をddlSource
IQueryable にバインドできます。
データベース内の項目を既に選択しており、ドロップダウン リストにデータを入力する際に項目を選択したいと考えていると思います。以下の例を検討してください
モデルを見る
public class TestVM
{
public int CategoryId { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
}
コントローラ内
public ActionResult Index()
{
TestVM objTestVM = new TestVM();
objTestVM.Categories = new List<SelectListItem>() {
new SelectListItem() { Value="1", Text="Food"},
new SelectListItem() { Value="2", Text="Movie"}
};
objTestVM.CategoryId = 2;//get this value from DB
return View(objTestVM);
}
ビューで
@model MvcApplication4.Models.TestVM
@using(Html.BeginForm())
{
@Html.DropDownListFor(m => m.CategoryId, Model.Categories, "--select--")
<input type="submit" value="submit" />
}
これで、ドロップダウンでカテゴリが自動的に選択されます。この場合は 2 です。また、他のカテゴリを選択してページを送信すると、新しいカテゴリ ID がコントローラーのポスト アクションにポストされます。