Как отфильтровать список или записи из базы данных на основе изменения выбора выпадающего списка? - PullRequest
0 голосов
/ 24 января 2019

Я хочу иметь возможность выбрать регион в раскрывающемся списке и отфильтровать список, чтобы показать записи из выбранного региона

Этот метод я использую для фильтрации списка.Я вызываю тот же метод в моей функции jquery ajax

    public IEnumerable<Sale> SortByRegion(string Regions)
    {
        var SortList = from a in db.Sales
                       where a.Region.Contains(Regions)
                       select a;

        return SortList.ToList();
    }

Это функция, в которой я использую jquery ajax для вызова моего метода mcv, который фильтрует список.

        function SortByRegion(Regions) {
            var Regions = $('#Regions').val();

            $.ajax({
                type: 'GET',
                url: '@Url.Action("SortByRegion", "Sales")',
                url: '/Sales/SortByRegion',
                data: { Regions: Regions },
                success: function (result) {
                    $('#Index').html(result);
                },
                error: function(xhr, status, err){

                }
            });

<select name="Regions" id="Regions" onchange="SortByRegion()">
    <option selected="selected" id="PlaceHolder">---Please Select Region---</option>
    <option id="Central">Central</option>
    <option id="East">East</option>
    <option id="West">West</option>
</select>

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Прежде всего ваш контроллер возвращает IEnumerable, который будет возвращать строковое сообщение, содержащее тип результата:

System.Collections.Generic.List`1[TypeOfYourSaleObject]

Вы должны изменить свой ответ контроллера на ActionResult

и return Json(list, JsonRequestBehavior.AllowGet);

Чем вам придется привязать выпадающий список. Вы также можете переместить этот раскрывающийся список в частичное представление и вернуть html как частичное представление для конкретной модели.

Вы можете изменить это на:

        [HttpGet]
        public ActionResult SortByRegion(string Regions)
        {
            var SortList = from a in db.Sales
                           where a.Region.Contains(Regions)
                select a;

            return Json(SortList.ToList(), JsonRequestBehavior.AllowGet);
        }

Добавьте дополнительную собственность к вашему запросу ajax:

dataType: "json"

и позже перепривязать выбранный вами контент с результатом json. Если ты хочешь идти по этому пути.

0 голосов
/ 24 января 2019

Вы смотрели в .change()?

https://api.jquery.com/change/

Описание : Привязать обработчик события к событию JavaScript «change» или вызвать это событие для элемента .

$( "#Regions" ).change(function() {
  SortByRegion($(this).val());
});

Этот метод является ярлыком для .on( "change", handler )

РЕДАКТИРОВАТЬ после дополнительного кода: измените свою функцию с function SortByRegion(Regions) { на function SortByRegion() {, поскольку вы не передаете ей никакого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...