Каскадное выпадающее выбранное значение

0

У меня есть 3 выпадающих меню. 1. Выберите страну 2. Выберите школу 3. выберите курс.

У меня для этого есть следующий код:

$(function () {
    $("#CountriesID").change(function () {
        $.getJSON("/Account/SchoolList/" + $("#CountriesID").val(), function (data) {
            var items = "<option>Select your school</option>";
            $.each(data, function (i, school) {
                items += "<option value='" + school.Value + "'>" + school.Text + "</option>";
            });
            $("#Schools").html(items);
        });
    });

    $("#Schools").change(function () {
        $.getJSON("/Account/CourseList/" + $("#Schools").val(), function (data) {
            var items = "<option>Select your Course</option>";
            $.each(data, function (i, course) {
                items += "<option value='" + course.Value + "'>" + course.Text + "</option>";
            });
            $("#Courses").html(items);
        });
    });
});

Это работает хорошо. Теперь, если кто-то сохранит эту информацию и снова вернется на страницу своего профиля, мне нужно показать сохраненное значение как выбранную опцию.

У меня есть спасенный школьник и курсист в Viewbag. Но как я могу использовать эти значения viewbag как SELECTED в приведенном выше коде?

Теги:
asp.net-mvc

2 ответа

1
Лучший ответ

Демо-версия jsFiddle

Это единственный способ сделать это, их гораздо больше. Я также рекомендовал бы отправить код страны, так как вам понадобится, чтобы заполнить все три раскрывающихся списка.

JS

function GetSchools(country) {
    return $.getJSON("/Account/SchoolList/" + country, function (data) {
        var items = "<option>Select your school</option>";
        $.each(data, function (i, school) {
            items += "<option value='" + school.Value + "'>" + school.Text + "</option>";
        });
        $("#Schools").html(items);
    });
}

function GetCourses(school) {
    return $.getJSON("/Account/CourseList/" + , function (data) {
        var items = "<option>Select your Course</option>";
        $.each(data, function (i, course) {
            items += "<option value='" + course.Value + "'>" + course.Text + "</option>";
        });
        $("#Courses").html(items);
    });
}

function OnSuccess(){
    if('@Html.Raw(ViewBag.courseid)' != '')
    {
        $('#Schools').val(@Html.Raw(ViewBag.courseid));
    }
}

$(function () {
    $("#CountriesID").change(function () {
        //Clears the list of Courses since the Country Changed
        $("#Courses").empty();

        //Gets the list of Schools for the new Country
        GetSchools(this.val());
    });

    $("#Schools").change(function () {
        //Gets the list of Courses for the selected school
        GetCourses(this.val());
    });

    if('@Html.Raw(ViewBag.schoolid)' != '')
    {
        $('#Schools').val(@Html.Raw(ViewBag.schoolid));
        $.when(GetCourses('@Html.Raw(ViewBag.schoolid)')).then(OnSuccess);
    }

});

Обновлено 17.09.2013 16:29

  • 0
    привет..Я добавил if ('@ Html.Raw (ViewBag.CountryId)'! = '') {$ ("# CountryID"). val ('@ Html.Raw (ViewBag.CountryId)'); } чтобы получить страну .. страна и курс работает просто отлично. Но значение школы не отображается в раскрывающемся списке. Если я вижу это на firebug, я вижу это: if ('9'! = '') {$ ('# Schools'). Val ('9'); $ .when (GetCourses ( '9')), то (OnSuccess).; } ..Но все равно выпадающий список ничего не показывает ... что может быть не так ??
  • 0
    хорошо ... теперь работает .. внесены небольшие изменения ... большое спасибо :)
0

Если у вас есть код в View, вы можете написать что-то вроде следующего:

$(document).ready(function(){
    var schoolID = "@ViewBag.schoolID";
    var courceID = "@ViewBag.courceID";

    $("#Schools option:selected").val(schoolID);
    $("#Course option:selected").val(courceID);
});

Если вы используете этот код в отдельном файле js, вы можете использовать hiden divs для получения данных ViewBags.

  • 0
    это не работает .. даже если это работает, не будет ли просто отображать это значение ViewBag в раскрывающемся списке, а не весь список? Мне нужно показать весь список, но будет выбрано значение ViewBag, то есть, если пользователи нажмут на выпадающий список, они увидят и другие значения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню