Krishna Veni Ответов: 1

Как добавить новую опцию, если она не существует в списке, используя select2 в MVC


На самом деле я реализовал несколько значений jquery autocomplete textbox.если опция или элемент не найдены в списке, я хочу добавить эту опцию в поле автозаполнения

Автозаполнение.cshtml по:

@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Select2 with Ajax</title>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet" />
    <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.2/jquery.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
</head>
<body>
    <div class="container">
        <div class="form-group">
            <label for="Select Country">Select Country</label>
            <select multiple="multiple" class="chose-country form-control"></select>
        </div>
    </div>
    <script>
        $(document).ready(function () {
            $(".chose-country").select2({
                ajax: {
                    url: '/Home/GetEmployeeList',
                    width: 'resolve',
                    data: function (params) {
                        return {
                            q: params.term// search term
                        };
                    },
                    processResults: function (data) {
                        return {
                            results: data.items
                        };
                    },
                    minimumInputLength: 2,
                    width: 'resolve'
                }
            });

        });
    </script>
</body>
</html>


Select2Model:

public class Select2Model
   {
       public string id { get; set; }
       public string text { get; set; }
   }


HomeController:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication3.Models;

namespace WebApplication3.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }

        public ActionResult autocomplete()
        {
            return View();
        }
        public ActionResult GetEmployeeList(string q)
        {

            var list = new List<Select2Model>();

            list.Add(new Select2Model()
            {
                text = "India",
                id = "101"
            });
            list.Add(new Select2Model()
            {
                text = "Srilanka",
                id = "102"
            });
            list.Add(new Select2Model()
            {
                text = "Singapore",
                id = "103"
            });

            if (!(string.IsNullOrEmpty(q) || string.IsNullOrWhiteSpace(q)))
            {
                list = list.Where(x => x.text.ToLower().StartsWith(q.ToLower())).ToList();
            }
            return Json(new { items = list }, JsonRequestBehavior.AllowGet);
        }
    }
}



Пожалуйста, помогите мне.
спасибо и с уважением

Что я уже пробовал:

На самом деле я реализовал несколько значений jquery autocomplete textbox.если опция или элемент не найдены в списке, я хочу добавить эту опцию в поле автозаполнения

1 Ответов

Рейтинг:
2

MadMyche

Чтобы добавить новую опцию в список select2 элемент, который вы бы использовали пометка
Динамическое создание опций | Select2 - замена jQuery для полей выбора[^]

Теперь, если это будет постоянное дополнение, у вас есть проблема; поскольку ваш контроллер использует жестко закодированный список стран для заполнения этого поля, и вы не можете просто добавить к этому коду.

Возможно, вы могли бы переместить свои страны в фиксированный источник данных (например, SQL, XML или текстовый файл), который имеет идентификаторы, текст и "активный" бит; просто заполните отображаемый список только теми странами, которые активны.
А если будет отправлена другая страна, вы можете обновить активный бит фиксированного источника данных для дальнейшего использования