今まで使ったことのない新しいタイプのフォーム選択を含む Web ページに取り組んでいます。
DropDownList
つまり、から複数のユーザーを選択して、データベースの新しいレコードに追加できるようにしたいと考えています。
asp.net フォーム関数 (Bootstrap jQuery スクリプト) が機能しており、複数の項目を適切に選択できます。ただし、送信ボタンを押してオブジェクトを作成すると、コードでは、複数ではなく 1 つの項目のみが選択されていることがわかります。
このコードが C# および ASP.NET に固有のものではないことは理解していますが、すべての項目から選択された状態を適切に取得するにはどうすればよいか疑問に思っていました。
C# および ASPX コード:
Project project = Project.GetByIdentification(ID);
foreach (ListItem item in ddlAssigned.Items)
{
if (item.Selected)
{
ProjectUser newUser = project.ProjectUsers.AddNew();
newUser.ProjectID = ID;
newUser.UserID = Convert.ToInt32(item.Value);
project.Save();
}
}
<label class="control-label" for="ddlAssigned">Assigned Users:</label>
<div class="controls">
<asp:DropDownList ID="ddlAssigned" runat="server" multiple="multiple"></asp:DropDownList>
</div>
<script type="text/javascript" src="../../Common/Scripts/bootstrap.multiselect.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$(document.getElementById('ddlAssigned')).multiselect({ includeSelectAllOption: true });
});
</script>
上記のコードの概要を説明すると、「ProjectUser」は「Project」の子オブジェクトであり、ProjectID と UserID の 2 つのフィールドしかありません。どちらも主キーであるため、各エントリは一意になります。
ASPX コードには、この機能を利用する JavaScript 要素があります: https://github.com/davidstutz/bootstrap-multiselect
あくまでもスタイリングです。スクリプトの有無にかかわらず試してみましたが、同じ問題が発生しています。
私が抱えている問題は、4行目の「if (item.Selected)」にあります。私の DropDownList では、2 人以上のユーザーが選択されていますが、この IF ステートメントは一度しか実行されません。コードによると、最初に選択された項目のみが選択され、残りは選択されていません。
コードに複数の選択を認識させるにはどうすればよいですか? プラグインやスクリプトはありますか?