2013-11-18 4 views
1

У меня есть служба, которая дает мне 10 записей результата, которые набирается пользователем в поиске TextBox. Таким образом, при нажатии клавиши textbox появляется вызов моего сервиса. Здесь я использую KendoUI AutoComplete, поэтому проблема заключается в том, что моя служба получает вызов до определения автозаполнения. Может ли кто-нибудь задуматься?Kendo UI Autocomplete custom binding

<input data-bind="value: searchString, valueUpdate: 'afterkeydown'" placeholder="Search me.."/> 
searchString: ko.computed({ 
     read: function() { }, 
     write: function (val) {    
      BindAutoTextBox(val); 
      return false; 
     } 
    }).extend({ throttle: 1000 }), 

function BindAutoTextBox(val){ 

ServiceHelper.getData('search/users?SearchText='+val, function (data) {  

     $("#LeftSearch").kendoAutoComplete({ 
      dataSource: { 
       data: data 
      }, 
      dataTextField: "User_Code", 
      template: '<table width="100%"><tr><td width="20%" valign="top">#:User_Code#</td><td width="30%" valign="top">#:Full_Name#</td><td width="30%" 

valign="top">#:Group_Name#</td></tr></table>' 

     }); 

     var autoComplete = $("#LeftSearch").data("kendoAutoComplete"); 
     // set width of the drop-down list 
     autoComplete.list.width(355); 

    }, null, 'http://abc/ApplicationRestService/', 'Users'); 

} 

Может ли кто-нибудь дать мне решение в кратком подробном коде?

+0

Можете ли вы поделиться кодом со мной так как у меня бит кендо опыт –

+0

Пожалуйста, попробуйте использовать нижеследующую ссылку. http://stackoverflow.com/questions/12560736/kendo-ui-autocomplete-datasource-transport-reads-only-once –

ответ

2

Я нашел решение, используя setDataSource автозаполнения kendoUI вы можете изменить источник данных с вашего сервиса, который будет получать вызов нажатием клавиши ...

<input id="autocomplete" /> 
<script> 
$("#autocomplete").kendoAutoComplete({ 
    dataSource: [ "Apples", "Oranges" ] 
}); 
var dataSource = new kendo.data.DataSource({ 
    data: [ "Bananas", "Cherries" ] 
}); 
var autocomplete = $("#autocomplete").data("kendoAutoComplete"); 
autocomplete.setDataSource(dataSource); 
</script> 



$("#autocomplete").keyup(function (e) { 

    var autocomplete = $("#autocomplete").data("kendoAutoComplete"); 
    dataSource = new kendo.data.DataSource({ 
         data: ["Apples", "Oranges","Bananas", "Cherries"] 
        }); 
    autocomplete.setDataSource(dataSource);     

}); 
0

Я набираю это из своего ipad, поэтому я не могу дать какой-либо пример кода на данный момент, но вы, кажется, делаете что-то в обратном направлении. Вы сами запрашиваете свой сервер для данных, а затем создаете автозаполнение kendo с результатом. Кроме того, автозаполнение будет создаваться каждый раз, когда вы вводите текст в поле. Правильный способ использования кендо - создать автозаполнение при загрузке страницы и настроить свой источник данных для запроса на ваш сервер. Вам не нужен код для нокаута или функция getData. Виджет автозаполнения будет извлекать данные, используя свой источник данных, когда символы вводятся в поле ввода самостоятельно. Посмотрите на примеры на http://demos.kendoui.com/web/autocomplete/index.html

Смежные вопросы