2013-06-19 59 views
1

我正在使用mvc的kendo ui自动填充小部件。kendo ui自动完成,如何绑定以加载数据?

我index.cshtml文件如下,

<div class="filter-value"> 
    @(Html.Kendo().AutoComplete() 
    .Name("InspectorId") 
    .DataTextField("RPersonDetails") 
    ) 
</div> 

而不是把这里的数据源,我想用JavaScript绑定。

我的JavaScript代码如下,

wireEvents: function() { 

    $("#InspectorId").bind("keyup", function() { AISApp.Page.populateDropDown($(this).val()) }); 
}, 


populateDropDown: function (value) { 

    var dataSource = new kendo.data.DataSource({ 
     transport: { 
      read: { 
       url: AISApp.Page.getSuburbsURL, 
       data: { 
        text: value 
       } 
      } 
     } 
    }); 

    var dd = $('#InspectorId').data("kendoAutoComplete"); 
dd.setDataSource(dataSource); 

}, 

这个工作,但只是想知道这是正确的方式做到这一点还是有办法做到这一点不使用keyup事件,只是用剑道事件?

感谢

回答

1

在你.cshtml有使用剑道帮手绑定到你的URL数据源的方式。然后,您可以让它在按下某个键时自动重新读取URL中的数据。 基本上它会将你的javascript keyup代码移动到帮手的代码中。

的代码看起来像这个例子:

<div class="filter-value"> 
    @(Html.Kendo().AutoComplete() 
      .Name("InspectorId") 
      .DataTextField("RPersonDetails") 
      .Filter("contains") 
      .DataSource(source => { 
       source.Read(read => 
       { 
        read.Action("GetProducts", "Home") 
         .Data("onAdditionalData"); 
       }) 
       .ServerFiltering(true); 
      }) 
    ) 
</div> 
<script> 
    function onAdditionalData() { 
     return { 
      text: $("#InspectorId").val() 
     }; 
    } 
</script> 
+0

我试图避免使用这个..因为它创造了全球的JavaScript函数。之后没有其他方式来约束它吗? – user2206329

+0

您可以不使用MVC扩展,而是使用JavaScript创建小部件。那么你可以避开全球。 – CodingWithSpike

+0

我不明白自动完成如何获取数据。看起来需要在控制器中加载一个列表: – JoshYates1980