Webmatrix、razor構文、cshtmlファイルを使用しています。
選択ボックス(id = "selStatus")を含むデータベースレコードの「編集」ページがあります。編集中の現在のレコードの値に基づいて、選択ボックスの「選択された」値を動的に設定しようとしています。
ローカル変数に現在の値またはそのインデックスがありますが、この値を選択に戻すことができないようです。
if (currentStatus=="Completed"){
selStatus.options[1].selected=true;
}
RES =エラー:名前 'selStatus'は現在のコンテキストに存在しません。
ここで明らかな何かが欠けていますが、それを取得できないようです。どんなアイデアでも大歓迎です。ありがとう
Javascriptを使用する以外に、ドロップダウンを作成するときに選択した項目を設定できます。
これは、動的に生成されたドロップダウンがある場合に機能します。ドロップダウンが静的な場合は、javascriptを使用する必要があります。
まず、ドロップダウンを埋めるデータを作成します。
var selectQ = "SELECT StatusName, StatusID FROM MyStatusTable";
List<SelectListItem> statusdropdownlistdata = new List<SelectListItem>();
bool isSelected = false;
foreach(var item in db.Query(selectQ)){
isSelected = false;
if(item.StatusName == "Completed"){
isSelected = true;
}
statusdropdownlistdata.Add(new SelectList Item
{
Text = item.StatusName,
Value = item.StatusID.ToString(),
Selected = isSelected
});
}
上記は、ドロップダウンに追加するデータを作成し、条件を満たすアイテムを選択します。特定の基準とロジックで機能するように変更する必要があります。
次に、これをcshtmlのHTML部分に追加します。
@Html.DropDownList("StatusTypes", statusdropdownlistdata)
上記は、ID = "StatusTypes"のドロップダウンリストと、選択したアイテムのドロップダウンデータをレンダリングします。
Html.DropdownListを検索すると、他のオプションやこれを行う方法を見つけることができるでしょう。
たとえば、婚姻状況のオプションの静的リストがある場合は、次のように(一部の人にとっては)読みやすくすることができます。
<select>
<option value="Single" @(marStat == "Single" ? "selected" : "")>Single</option>
<option value="Married" @(marStat == "Married" ? "selected" : "")>Married</option>
<option value="Divorced" @(marStat == "Divorced" ? "selected" : "")>Divorced</option>
<option value="Widowed" @(marStat == "Widowed" ? "selected" : "")>Widowed</option>
</select>
これは、データベースから取得した値を含むかみそり変数marStatが条件の文字列と一致する場合、HTMLに「選択済み」と表示されることを意味します。少し「野蛮な」スタイルですが、とても読みやすいと思います。
レイアウトサイト:
@{
if (!IsPost)
{
PageData["accountType"] = 0; /* default value */
}
}
<html>
<head></head>
<body>
<form action="@Href("~/")" method="post">
<select name="accountType">
<option value="0"@(PageData["accountType"] == 0 ? " selected" : "")>Standard</option>
<option value="1"@(PageData["accountType"] == 1 ? " selected" : "")>Golden</option>
<option value="2"@(PageData["accountType"] == 2 ? " selected" : "")>Ultimate</option>
</select>
</form>
</body>
<html>
他のサイトでは、次のような方法でアクセスできます。
var accountType = Convert.ToInt32(Request["accountType"]);
後であなたのニーズに合わせて設定してください
PageData["accountType"] = (required int value);