0

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>

In my controlleri は 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 部分で「/AddNewOpp/FetchItems」という URL を呼び出すことができないようです。

4

2 に答える 2

1

私は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);
        }

コンテキスト DB:

    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;
    }
于 2013-09-18T10:29:18.843 に答える