2014-01-17 5 views
1

У меня есть текстовое поле, связанное с виджетами автозаполнения KendoUI. Код JS выглядит так:KendoUI Autocomplete paging issue

 var dataSourceImeSearch = { 
      type: "json", 
      transport: { 
       read: { 
        url: "@Url.Action("ImeSearch")", 
        contentType: "application/json; charset=utf-8", 
        type: "POST" 
       }, 
       parameterMap: function (data, type) { 
        if (type == "read") { 

         if (data.filter) { 
          data = $.extend({ sort: null, filter: data.filter.filters[0] }, data); 
         } else { 
          data = $.extend({ sort: null, filter: null }, data); 
         } 

         return JSON.stringify(data); 
        } else { 
         return JSON.stringify({ model: data }); 
        } 
       } 
      }, 
      batch: false, 
      pageSize: 10, 
      serverPaging: true, 
      serverFiltering: true, 
      serverSorting: true, 
      schema: { 
       errors: "Errors", 
       data: "Data", 
       total: "TotalRecordCount", 
       model: myModel 
      }, 
      error: function (e) { 
       if (e.errors) { 
        alert(e.errors); 
       } 
      } 
     }; 

     $("#Ime").kendoAutoComplete({ 
      dataTextField: "PunoIme", 
      filter: "contains", 
      minLength: 3, 
      dataSource: dataSourceImeSearch 
     }); 

У меня здесь странная вещь. Autocomplete работает с точки зрения того, что при вводе третьего символа он запускается на сервер и получает данные JSON оттуда и показывает первые десять результатов. Дело в том, что это текстовое поле ищет большие массивы данных, поэтому для некоторых запросов с 4 баллами набор результатов может содержать более 1000 элементов. По какой-то причине виджет не выясняет, что есть более 10 результатов, и когда я прокручиваю вниз в раскрывающемся списке автозаполнения, который отображается, он не будет запускать поиск второй страницы и так далее. Вы можете видеть, что для источника данных serverPaging установлено значение true, но это не помогает.

Любая помощь приветствуется. Спасибо.

ответ

0

Вы установили PAGESIZE: 10, что означает, что только 10 записей возвращаются в автозаполнения и его DataSource содержит только 10 элементов, я боюсь, что автоматический пейджинг не реализован по умолчанию

2

я узнал после размещения этот вопрос, что виджет Autocomplete не позволяет подкачки по дизайну. Это объяснялось на форумах KendoUI некоторым сотрудником Kendo как пример плохого UX (если у вас есть автозаполнение, требующее подкачки). Я бы сказал, что, поскольку, на мой взгляд, первый случай использования автозаполнения был бы в случае поиска человека, и здесь я делаю именно это. Единственная проблема заключается в том, что если вы будете искать по второму имени человека, вы можете получить сотни результатов после первых 3 или 4 символов, и вам действительно нужен пейджинг для этого. Если люди кендо думают, что это случай плохого UX, это должно быть четко упомянуто в документации Autocomplete, и я действительно не мог бы найти упоминания об этом в одном месте, и можно было бы подумать, что это может быть хорошим идея упомянуть что-то подобное людям, чтобы им не приходилось тратить весь день, пытаясь понять, что пошло не так.

На мой взгляд, один из худших примеров использования на всех демонстрационных примерах на веб-демонстрационных страницах KendoUI - это пример Shared DataSource, где, если вы наберете «ch» в текстовом поле автозаполнения вверху, вы получите 10 результатов в автозаполнении, но 14 в списке данных. Мне действительно кажется глупым, что никто в Кендо не считает это поведение странным.

Таким образом, мой ответ на мой вопрос будет следующим: НЕ используйте автозаполнение, за исключением некоторого действительно очень простого варианта использования (я не могу думать об одном, который имел бы смысл). В итоге я создал целую форму поиска с 5 текстовыми полями и кнопкой поиска в случае, когда я надеялся, что смогу использовать 2 текстовых поля (один с автозаполнением) и кнопку поиска.

+0

Согласен, есть случаи, когда вам может понадобиться опция «показать больше результатов» в нижней части списка. Является ли это хорошим UX или нет, это вопрос мнения, кажется немного заносчивым из Kendo опустить поддержку для него на основе их мнения. Альтернативой, на которую вы могли бы обратить внимание, является Select2, она поддерживает «бесконечную прокрутку», как они ее называют. Http://ivaynberg.github.io/select2/#infinite –