我有2个下拉列表:团队和玩家 当我选择一个团队时,这些团队的玩家会显示在下拉列表中,#34;玩家"。 感谢javascript(谁在下拉列表中获得Team Id)和第二个下拉列表的部分视图。它工作得非常好。
接下来,我想动态添加此级联下拉列表的新行。 目前,我能够做到这一点,但我的问题是,在第二行,下拉列表"玩家" (DL 4)获得第一个下拉列表的值#34; Team" (DL1)而不是他的线下拉列表(DL3)。 如果我添加另一行,它也是一样的:在下拉列表中" Team"我是所有球队但是在下拉列表中#34;玩家"我在第一个下拉列表中选择了ID的值" Team"。
=============================================== =======
EDITION:
添加了2张图片以澄清我的问题=> Database和Workflow
正如您在图像"工作流程"中看到的那样,面板9中显示的新线路的播放器列表是错误的。玩家列表是指第一个团队选择而不是(应该是)第二个团队。
=============================================== =======
我的代码:
在视图中:
<form method="post">
<a style="margin: 10px 0;" href="javascript:addRow();">Add Row</a>
<table id="formTable">
<thead>
<tr>
<th>Team</th>
<th>Player</th>
</tr>
</thead>
<tbody>
<tr>
<td>
@if (ViewBag.TeamList != null)
{
@Html.DropDownListFor(m => m.TeamId, ViewBag.TeamList as SelectList, "-- Select Team--", new { @class = "form-control" })
}
</td>
<td>
@Html.DropDownListFor(m => m.PlayerId, new SelectList(""), "--Select Player--", new { @class = "form-control" })
</td>
</tr>
</tbody>
</table>
</form>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
@Styles.Render("~/Content/css")
@Styles.Render("~/Script/js")
<!-- Cascading dropdownlist-->
<script>
$(document).ready(function () {
$("#TeamId").change(function () {
var teamId = $(this).val();
debugger
$.ajax({
type: "Post",
url: "/OCs/GetPlayerList?TeamId=" + teamId,
contentType:"html",
success: function (response) {
debugger
$("#PlayerId").empty();
$("#PlayerId").append(response);
}
})
})
})
</script>
<!-- Add new row-->
<script type="text/javascript">// <![CDATA[
function addRow() {
//copy the table row and clear the value of the input, then append the row to the end of the table
$("#formTable tbody tr:first").clone().find("select").each(function () {
$(this).val('');
}).end().appendTo("#formTable");
}
// ]]></script>
在部分视图中:
<option value="">--Select Player--</option>
@if (ViewBag.PlayerOptions != null)
{
foreach (var item in ViewBag.PlayerOptions) {
<option value="@item.Value">@item.Text </option>
}
}
在控制器中:
public ActionResult Create()
{
ViewBag.TeamList = new SelectList(GetTeamList(), "IdTeam", "NameTeam");
....
return View(stuModel);
}
public List<Team> GetTeamList()
{
MyDbEntities db = new MyDbEntities();
List<Team> teamList = db.Teams.ToList();
return teamList
}
public ActionResult GetPlayerList(int TeamId)
{
MyDbEntities db = new MyDbEntities();
List<Playert> playerList = db.Players.Where(x => x.IdRefTeam == TeamId).ToList();
ViewBag.PlayerOptions = new SelectListplayerList "IdPlayer", "PlayerNom");
return PartialView("PlayerOptionsPartial");
}
我认为团队的问题并不是唯一的问题......它始终是TeamId(来自&#34; @ Html.DropDownListFor(m =&gt; m。 TeamId ,...&#34;
有人能解决我的问题吗? 如何添加动态级联下拉列表(有2级或3级)?