Multiselect выпадающий поиск на стороне сервера sql server - PullRequest
0 голосов
/ 21 января 2019

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

Вот так я заполняю свой мультиселект

    @{
     UserContext userContext = new UserContext();
     UserModel user = new UserModel();

  user.CompanyList = userContext.GetCompanyList();
   @Html.ListBoxFor(model => user.SelectedArray, new MultiSelectList(user.CompanyList, "cmpName", "cmpName"), new { @class = " form-control  chosen-select ", @id = "company", multiple = "multiple" })

 } 

JSON для отправки выборов в действие и заполнения dataTable.

$(document).ready(function () {
                var yesnoTable = $('#datatableCmp').DataTable({
                    "ajax": {
                        "url": "/Users/GetList",
                        "type": "POST",
                        "datatype": "json"
                    },
                    "columns": [
                        { "data": "ID", "name": "ID" },
                        { "data": "FriendlyName", "name": "FriendlyName" },
                        { "data": "ContactNumber", "name": "ContactNumber" },
                        { "data": "EmailAddress", "name": "EmailAddress" },
                        { "data": "DateOfBirth", "name": "DateOfBirth" },
                        { "data": "Company", "name": "Company" },
                        { "data": "LoginAccepted", "name": "LoginAccepted" },
                        { "data": "Action", "name": "Action" }
                    ],
                    "serverSide": "true",
                    "processing": "true",
                    "orderMulti": "false"
                });

                oTable = $('#datatableCmp').DataTable();
                $('#UsersearchButton').click(function () {
                    oTable.columns(1).search($('#filter_Name').val().trim());
                    oTable.columns(6).search($('#yesNo option:selected').text());

                    oTable.columns(5).search($('#company option:selected').text());

                });

            });

Результат действия

public ActionResult GetList()
        {
            List<UserModel> usrModel = new List<UserModel>();
            usrModel = userViewModel.Index();
            var draw = Request.Form.GetValues("draw").FirstOrDefault();
            var start = Request.Form.GetValues("start").FirstOrDefault();
            var length = Request.Form.GetValues("length").FirstOrDefault();
            var sortCulmn = Request.Form.GetValues("columns[" + Request.Form.GetValues("order[0][column]").FirstOrDefault() + "][name]").FirstOrDefault();
            var sortColumnDir = Request.Form.GetValues("order[0][dir]").FirstOrDefault();
            int pageSize = length != null ? Convert.ToInt32(length) : 0;
            int skip = start != null ? Convert.ToInt32(start) : 0;
            int totalRecords = 0;
            var userName = Request.Form.GetValues("columns[1][search][value]").FirstOrDefault();
            var userCompany = Request.Form.GetValues("columns[5][search][value]").FirstOrDefault();
            var userActive = Request.Form.GetValues("columns[6][search][value]").FirstOrDefault();
            if (!string.IsNullOrEmpty(userName))
            {
                usrModel = usrModel.Where(a => a.FriendlyName.ToLower().Contains(userName.ToLower())).ToList();
            }
            if (!string.IsNullOrEmpty(userActive))
            {
                usrModel = usrModel.Where(a => a.LoginAccepted == userActive).ToList();
            }
            if (!string.IsNullOrEmpty(userCompany))
            {
                usrModel = usrModel.Where(a => a.Company.Contains(userCompany)). ToList();
            }
            if (!(string.IsNullOrEmpty(sortCulmn + "" + sortColumnDir)))
            {
                usrModel = usrModel.OrderBy(sortCulmn + " " + sortColumnDir).ToList();
            }
            totalRecords = usrModel.Count();
            var data = usrModel.Skip(skip).Take(pageSize).ToList();
            return Json(new { draw = draw, recordsFiltered = totalRecords, recordsTotal = totalRecords, data = data }, JsonRequestBehavior.AllowGet);


        }

Когда я запускаю отладчик, я вижу результат с именем без пробела (BobBuilderTch), имена сохраняются в БД в виде следующего, например ... Tch, Bobbuilder, Makro. Я собираюсь начать сохранять их как целые числа, но пока они сохраняются как строковые значения. Я попробовал

oTable.columns(5).search($('#company option:selected').append('<option value="' + "," + '">' + "," + '</option>').text());  

Но это ничего не вернуло.

Заранее спасибо.

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