Получение выпадающего списка Select2 с работающей Ajax - PullRequest
0 голосов
/ 27 марта 2020

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

Я хочу выпадающий список select2, который при вводе вызывает функцию в контроллере с учетом того, что вы ввели, и возвращает контакты из БД с этим текстом в именах, который возвращается к представлению и заполняет раскрывающийся список, динамически.

Это раскрывающийся код:

<select class="form-control select2-container--bootstrap4" id="telephone-contacts-list"></select>

Вот javascript. Это немного повсеместно, потому что я пробовал множество разных вещей, как упомянуто:

$('#telephone-contacts-list').select2({
                theme: 'bootstrap4',
                minimumInputLength: 2,
                placeholder: "Search for a contact...",
                allowClear: true,
                ajax: {
                    delay: 250,
                    url: 'GetContactsList',
                    dataType: "json",
                    type: "GET",
                    data: function (params) {
                        var query = {
                            search: params.term,
                            type: 'public',
                            detailType: "telephone"
                        }

                        // Query parameters will be ?search=[term]&type=public
                        return query;
                    },
                    processResults: function (data) {
                        return { results: data };
                    }

                },
                formatResult: itemFormatResult,
                formatSelection: function (item) {
                    return item.name;
                },
                escapeMarkup: function (m) { return m; }
            });

        function itemFormatResult(item) {
            var markup = "<option value='" + item.value+"'>"+item.name+"</option>";
            return markup;
        }

Это функция контроллера, которая возвращает сериализованный объект, который имеет поля имени и значения:

Public Function GetContactsList(search As String, type As String, detailType As ContactDetailModel.DetailType) As JsonResult
            Dim l
            l = (From c In DB.Contacts Order By c.PrimaryName.FullName Descending Select New With {.name = c.PrimaryName.FullName, .value = c.ID}).ToArray
            Return Json(l, JsonRequestBehavior.AllowGet)
End Function

Обратите внимание, я хочу, чтобы раскрывающийся список заполнялся таким образом, чтобы свойство name списка выбора отображалось на свойство name, а свойство значения списка select для сопоставления со свойством value для каждого элемента, поэтому я могу сделайте дальше javascript wizar dry с этим позже.

Так что да, может кто-нибудь, пожалуйста, сообщите мне, что я делаю неправильно и что мне нужно сделать правильно, чтобы заставить его работать как задумано? Как вы, вероятно, видите, я довольно новый программист, и поэтому могу бороться с ответами, которые требуют слишком большого количества базовых знаний, но, тем не менее, я бы принял их за пустяки, поэтому любая помощь очень ценится!

Приветствия

...