Веб-формы Select2 не привязываются после возвращенного результата с ajax "ничего не найдено" - PullRequest
0 голосов
/ 19 марта 2020

Я возвращаю результат для исследуемого предмета или предметов как json со стороны сервера, но select2 не может добавить его. нет ошибок консоли. вот мой код, если кто-нибудь может помочь! спасибо.

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static string GetResults(string q)
    {
        List<Select2Model> list = new List<Select2Model>();

        //geting the data to be searched into a list

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

и вот мой код переднего конца

 $("#<%=DDL_NAME.ClientID%>").select2({
        //placeholder: "Search for item",
        minimumInputLength: 3,
        ajax: {
            type: "POST",
            url: '<%= ResolveUrl("~/page.aspx/GetResults") %>',
            dataType: 'json',
            data: function (params) {
                    return  JSON.stringify({ q: params.term });
            },
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            processResults: function (data) {
                return { results: data.items };
            }
        }
   });

1 Ответ

0 голосов
/ 20 апреля 2020

Я нашел решение Для тех, кто ищет эту ошибку:

на стороне сервера:

[WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static string GetResults(string q)
    {
        List<Select2Model> list = new List<Select2Model>();

        //geting the data to be searched into a list
        list = (from DataRow row in _cotalog.Rows
                select new Select2Model
                {
                    id = row["CODE"].ToString(),
                    text = row["LABEL"].ToString()
                }).ToList();
        if (!(string.IsNullOrEmpty(q) || string.IsNullOrWhiteSpace(q)))
        {
            list = list.Where(x => x.text.ToLower().Contains(q.ToLower())).ToList();
        }
        return new JavaScriptSerializer().Serialize(new { results = list, pagination = new { more = true } }); ;
    }

на стороне клиента:

 $("#<%=DDL.ClientID%>").select2({
        placeholder: "Search for item",
        minimumInputLength: 3,
        ajax:
        {
            type: "POST",
            dataType: 'json',
            contentType: "application/json; charset=utf-8",
            url: '<%= ResolveUrl("~/page.aspx/GetResults") %>',
            data: function (params) {
                return JSON.stringify({ q: params.term });
            },
            processResults: function (data, page) {
                //console.log(JSON.parse(data.d).results);
                return { results: JSON.parse(data.d).results };
            }
        }
    });

Если вы также хочу модель:

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