【问题标题】:kendo ui autocomplete, how to bind to load the data?kendo ui自动完成,如何绑定加载数据?
【发布时间】:2013-06-19 21:36:19
【问题描述】:

我正在使用带有 mvc 的 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 事件,只使用 kendo 事件?

谢谢

【问题讨论】:

    标签: kendo-ui


    【解决方案1】:

    在您的 .cshtml 中,有一种方法可以使用 Kendo 助手通过您的 URL 绑定到 DataSource。然后,您可以让它在按下某个键时自动从 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>
    

    【讨论】:

    • 我试图避免使用这个.. 因为它创建了全局 javascript 函数。以后就没有其他方法绑定了吗?
    • 您不能使用 MVC 扩展,而是使用 javascript 创建小部件。然后你可以避免全局。
    • 我不明白自动完成是如何获取数据的。似乎需要在控制器中加载一个列表:
    猜你喜欢
    • 2013-12-01
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 2012-12-08
    • 1970-01-01
    • 2012-01-07
    相关资源
    最近更新 更多