ASP.NET MVC: добавить динамически каскадный выпадающий список

У меня есть 2 выпадающих списка: Команды и игроки. Когда я выбираю команду, игроки для этой команды отображаются в выпадающем списке "Игроки". Я делаю это благодаря javascript (который получает Team Id в выпадающем списке) и частичному представлению для второго выпадающего списка. Это работает очень хорошо.

Далее я хочу динамически добавить новую строку этого каскадного выпадающего списка. В настоящее время я могу это сделать, но моя проблема в том, что во второй строке выпадающий список "Игроки" (DL 4) получает значение первого выпадающего списка "Команда" (DL1), а не из выпадающего списка его линии (DL3).). И то же самое, если я добавлю еще одну строчку: в выпадающем списке "Команда" у меня есть все команды, но в выпадающем списке "Игроки" у меня есть значения из выбранного Id в первом выпадающем списке "Команда".

рабочий процесс

================================================== ====

ИЗДАНИЕ:

2 изображения добавлены, чтобы прояснить мою проблему => База данных и рабочий процесс

Как вы можете видеть на изображении "Рабочий процесс", список игроков, отображаемых на панели 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");

    }

Я думаю, что есть проблема с идентификатором Team, который не является уникальным... Это всегда TeamId (происходит от "@ Html.DropDownListFor (m => m.TeamId,...")

У кого-нибудь есть решение моей проблемы? Как добавить динамически каскадный выпадающий список (с 2 или 3 уровнями)?

0 ответов

Другие вопросы по тегам