簡體   English   中英

使用ASP.net MVC4填充Select2下拉列表

[英]Filling Select2 Dropdown using ASP.net MVC4

我試圖填寫一個下拉列表,該下拉列表使用asp.net mvc4使用Select2 Jquery加載項。 我已經搜索了stackoverflow並找到了相關的主題,如下所示;

從MVC 4中的數據庫填充Select2下拉框

但是在我的項目中,我無法完成這項工作。

在我看來

<div class="control-group">
                            <label class="control-label">Proje Adı</label>
                            <div class="controls">
                                 <select id="PROJECTID">

                                     </select>
                                 </div>
</div>

ri In my controlle控件中寫了我的操作,該操作返回JSON,並且我已經使用手動條目測試了此操作,並且確定 我可以看到JSON結果。

  public JsonResult FetchItems(string query)
        {
            List<CRM_PROJECTS> projectList = db.CRM_PROJECTS.Where(p => p.IS_VALID == 1 && p.NAME != null).ToList(); //fetch list of items from db table
            List<CRM_PROJECTS> resultProjectList = new List<CRM_PROJECTS>(); //create empty results list
            foreach (var item in projectList)
            {
                //if any item contains the query string
                if (item.NAME.IndexOf(query, StringComparison.OrdinalIgnoreCase) >= 0)
                {
                    resultProjectList.Add(item); //then add item to the results list
                }
            }
            //resultProjectList.Sort(delegate(Item c1, Item c2) { return c1.ItemName.CompareTo(c2.ItemName); }); //sort the results list alphabetically by ItemName
            var serialisedJsonProjects = from result in resultProjectList //serialise the results list into json
                select new
                {
                    name = result.NAME, //each json object will have 
                    id = result.ID      //these two variables [name, id]
                };
            return Json(serialisedJsonProjects, JsonRequestBehavior.AllowGet); //return the serialised results list
        }

在select2.js文件中,我實現了代碼的Jquery部分。

 $(document).ready(function () {
        $("#PROJECTID").select2({

            placeholder: "Type to find a Contract",
            allowClear: true,
            minimumInputLength: 2,
            ajax:{ 
                cache: false,
                dataType: "json",
                type: "GET",
                url: "/AddNewOpp/FetchItems",               
                data: function (searchTerm) {
                    return { query: searchTerm };
                },
                results: function (data) { 
                    return {results: data}; 
                }
            },
            escapeMarkup: function (m) { return m; }
        });

 });

我無法填充我的下拉列表,並且似乎無法在jquery的ajax部分中調用我的url:“ / AddNewOpp / FetchItems”。

我在js文件中使用以下代碼:

jQuery的:

function getEoOrgPositions() {
        $.ajax({
            url: "/GetDataHandler/GetEoOrgPosition",
            type: "POST",
            data: { action: '1' },
            dataType: "json",
            success: function (data) {
                $.each(data, function (key, value) {
                    $('#selectListOrg')
                        .append($("<option></option>")
                        .attr("value", key)
                        .text(value));
                    options.push({ value: key, text: value });
                });
             }
        });
}

我的控制器名稱是GetDataHandler:

       [AcceptVerbs(HttpVerbs.Post)]
        public JsonResult GetEoOrgPosition(string action)
        {
            return Json(_db.GetEoOrgPosition(action), JsonRequestBehavior.AllowGet);
        }

上下文數據庫:

    public Dictionary<string, string> GetEoOrgPosition(string action)
    {
        var data = new DataTable();
      var postlist=new Dictionary<string, string>( );
        using (var connection = new SqlConnection(_connectionString))
        {
            using (var command = new SqlCommand())
            {
                command.Connection = connection;
                command.CommandText = string.Format(
                                      "select PosSysCode , PosParentSysCode , EOSysNum , PosName + ' : ' + PrsName + ' ' + PrsLastName as FullPostName " +
                                      "FROM EOOrgPosition " +
                                      "inner join EOPersons on EOOrgPosition.CA_Persons = EOPersons.CA_Persons " +
                                      "left outer join vwEOUsers usr on (usr.UsrPrsCode = EOPersons.PrsCode) and (usr.UsrState <> 'active') " +
                                      "WHERE usr.EOSysNum IN (select WhichCode from EOPermAssign WHERE OwnerCode = {0} AND Status = 4) order by FullPostName",
                                      action);

                using (var da = new SqlDataAdapter(command))
                {
                    try
                    {
                        da.Fill(data);
                        postlist =
                   data.Rows.Cast<DataRow>()
                       .ToDictionary(item => item["PosSysCode"].ToString(),
                                     item => item["FullPostName"].ToString());
                    }
                    catch
                    {
                    }
                }
            }
        }

        return postlist;
    }

解決了

查看:您需要將輸入元素的type =“ hidden”屬性。

@Html.HiddenFor(m => m.CUSTOMERID, new { id = "CUSTOMERID", @class = " input-block-level  bigdrop", placeholder = "Search for customer" })

控制器 :目的是獲取您要用來填充下拉列表的數據,並返回json。

public JsonResult FetchItemsCustomer(string query)
        {
            List<CRM_CUSTOMERS> projectList = db.CRM_CUSTOMERS.Where(p => p.IS_VALID == 1 && p.NAME != null).ToList(); //fetch list of items from db table
            List<CRM_CUSTOMERS> resultProjectList = new List<CRM_CUSTOMERS>(); //create empty results list
            foreach (var item in projectList)
            {
                //if any item contains the query string
                if (item.NAME.IndexOf(query, StringComparison.OrdinalIgnoreCase) >= 0)
                {
                    resultProjectList.Add(item); //then add item to the results list
                }
            }
            //resultProjectList.Sort(delegate(Item c1, Item c2) { return c1.ItemName.CompareTo(c2.ItemName); }); //sort the results list alphabetically by ItemName
            var serialisedJsonProjects = from result in resultProjectList //serialise the results list into json
                                         select new
                                         {
                                             name = result.NAME, //each json object will have 
                                             id = result.ID      //these two variables [name, id]
                                         };
            return Json(serialisedJsonProjects, JsonRequestBehavior.AllowGet); //return the serialised results list
        }

JQUERY AJAX部分:

$("#CUSTOMERID").select2({
        minimumInputLength: 4,
        ajax: {
            url: "/AddNewOpp/FetchItemsCustomer/",
            dataType: 'json',
            quietMillis: 100,
            data: function (searchTerm) {
                return { query: searchTerm };
            },
            results: function (data) {
                return { results: data };
            }
        },
        formatNoMatches: function () {
            $("#addAsCustomer").fadeIn(1000);
            return "Aradığınız müşteri sistemde kayıtlı değil,\"Yeni Ekle\" butonuna tiklayiniz";
        },
        formatInputTooShort: function (input, min) {
            $("#addAsCustomer").fadeOut(500);
            var n = min - input.length; return "" + n + " karakter daha giriniz" + (n == 1 ? "" : "");
        },

        formatResult: contractFormatResult,
        formatSelection: contractFormatSelection,
        escapeMarkup: function (m) { return m; }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM