Select2 не сохраняет выбранное значение - PullRequest
0 голосов
/ 25 января 2019

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

Использовал этоссылка, чтобы сделать опции Select2 clickable: Прикрепить событие клика к элементу в .select2-result

В контроллере:

public ActionResult Real_Estate(string Tipo_Imovel_Search, string Localizacao_Search, string Tipologia_Search, string PrecoFrom, string PrecoTo, string AreaFrom, string AreaTo, string sortOrder, int? page)
{
    //Create List of RealEstateAllViewModel and fill it depend on searching strings
    var ApartmentsModel = new RealEstateAllViewModel();
    var ApartmentsList = ApartmentsModel.GetRegistos(Tipo_Imovel_Search, Localizacao_Search, Tipologia_Search, PrecoFrom, PrecoTo, AreaFrom, AreaTo);

    //sorting

    //Saved current sort variable for Paging List do not lose sorting in second page
    ViewBag.CurrentSort = sortOrder;

    switch (sortOrder)
    {
        case "preco_asc":
            ApartmentsList = ApartmentsList.OrderBy(s => s.Preco).ToList();
            break;
        case "preco_desc":
            ApartmentsList = ApartmentsList.OrderByDescending(s => s.Preco).ToList();
            break;
        case "area":
            ApartmentsList = ApartmentsList.OrderBy(s => s.Area_util).ToList();
            break;

В представлении:

<div class="container">
    <div class="row">
        <div class="col-12">
            @*select order list*@
            <select class="search">
                <option value="@Url.Action("Real_Estate", "Apartamentos", new { sortOrder = "preco_asc", Tipo_Imovel_Search = Request.QueryString["Tipo_Imovel_Search"], Localizacao_Search = Request.QueryString["Localizacao_Search"], Tipologia_Search = Request.QueryString["Tipologia_Search"], PrecoFrom = Request.QueryString["PrecoFrom"], PrecoTo = Request.QueryString["PrecoTo"], AreaFrom = Request.QueryString["AreaFrom"], AreaTo = Request.QueryString["AreaTo"] })">
                    Preço (crescente)
                </option>
                <option value="@Url.Action("Real_Estate", "Apartamentos", new { sortOrder = "preco_desc", Tipo_Imovel_Search = Request.QueryString["Tipo_Imovel_Search"], Localizacao_Search = Request.QueryString["Localizacao_Search"], Tipologia_Search = Request.QueryString["Tipologia_Search"], PrecoFrom = Request.QueryString["PrecoFrom"], PrecoTo = Request.QueryString["PrecoTo"], AreaFrom = Request.QueryString["AreaFrom"], AreaTo = Request.QueryString["AreaTo"] })">
                    Preço (decrescente)
                </option>
                <option value="@Url.Action("Real_Estate", "Apartamentos", new { sortOrder = "area", Tipo_Imovel_Search = Request.QueryString["Tipo_Imovel_Search"], Localizacao_Search = Request.QueryString["Localizacao_Search"], Tipologia_Search = Request.QueryString["Tipologia_Search"], PrecoFrom = Request.QueryString["PrecoFrom"], PrecoTo = Request.QueryString["PrecoTo"], AreaFrom = Request.QueryString["AreaFrom"], AreaTo = Request.QueryString["AreaTo"] })">
                    Área (crescente)
                </option>
                <option value="@Url.Action("Real_Estate", "Apartamentos", new { sortOrder = "area_desc", Tipo_Imovel_Search = Request.QueryString["Tipo_Imovel_Search"], Localizacao_Search = Request.QueryString["Localizacao_Search"], Tipologia_Search = Request.QueryString["Tipologia_Search"], PrecoFrom = Request.QueryString["PrecoFrom"], PrecoTo = Request.QueryString["PrecoTo"], AreaFrom = Request.QueryString["AreaFrom"], AreaTo = Request.QueryString["AreaTo"] })">
                    Área (decrescente)
                </option>
            </select>
        </div>
    </div>
</div>

Javascript:

$(".search").select2({
        language: "pt",
        minimumResultsForSearch: Infinity, //remove search box from single list
        templateResult: function (data) {
            if (data.id == null) {
                return data.text;
            }

            //used for allow click href in list
            var $listoption = $("<a>" + data.text + "</a > ");
            $listoption.prop("href", data.id);
            $listoption.on('mouseup', function (evt) {
                evt.stopPropagation();
            });

            return $listoption;
        }
    });

Все работает просто отлично: изменение URL зависит от строки поиска: http://localhost:41350/pt/Apartamentos/Real_Estate?sortOrder=preco_asc

Контроллер возвращает правый упорядоченный список

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

Как я могу это сделать?

Пожалуйста, помогите, я новичок в JavaScript.Спасибо.

...