2013-11-21 66 views
0

Kendo AutoComplete发生问题。我有一个表单,我想在其中应用AutoComplete Widget。其中一些字段是在用户进行某些操作后动态创建的。Kendo AutoComplete的新数据源

这里就是我所做的:

function myAutoComplete() { 

    $("input.autocomplete").each(function() { 

     //...Some code... 

     //Kendo AutoComplete 
     $(this).kendoAutoComplete({ 

      //Data 
      dataSource: new kendo.data.DataSource({ 
       //URL 
       transport: { 
        read: { 
         url : "utils/autocomplete.php", 
         data : {case: acCase, ent: $(prefixTarget + ' input[id*="entreprise_id"]').val()}, 
         cache : false 
        } 
       }, 
       schema: { 
        data: "data" 
       } 
      }), 
      select: function(e){  
       var dataItem = this.dataItem(e.item.index()); 

       switch (acCase) { 
        case 1 : 
         $(prefixTarget + ' input[id*="'+selectorTarget+'"]').val(dataItem.CLI_NUM); 
         break; 
        case 2 : 
         $(prefixTarget + ' input[id*="'+selectorTarget+'"]').val(dataItem.ENT_NUM); 
         break; 
        case 3 : 
         $(prefixTarget + ' input[id*="'+selectorTarget+'"]').val(dataItem.SUC_NUM); 
         break; 
        case 4 : 
         $(prefixTarget + ' input[id*="'+selectorTarget+'"]').val(dataItem.id); 
         break;  
       } 
      }, 
      filter: "contains", 
      highlightFirst: true, 
      suggest: true, 
      dataTextField: "SearchField" 

     //End Kendo AutoComplete  
     }); 
    //End each 
    }); 
//End function 
}; 

这个函数被调用时准备好文档或创建一个新的元素时。一切正常!

我注意到,dataSource只被调用一次,当用户第一次在字段中输入某些内容时。我想要做的就是每次用户输入字段时调用“dataSource”,因为在“transport”中传递的某些数据可能已被更改。在某种程度上,我只是想再次调用名为“autocomplete.php”的文件以使用新参数进行新查询。

我在互联网上和Kendo UI的文档中搜索,但没有找到如何使它。

有人可以向我解释我做错了什么吗?

回答

1

这是因为默认过滤是在客户端执行的。您需要启用服务器端过滤器,将serverFiltering选项设置为true。

+0

这就是我一直在寻找的东西。非常感谢!当我第一次在Kendo UI的文档中阅读它时,我并不十分了解这一部分。 – LancelotKiin