3

我在我的 asp.net mvc 应用程序中使用 Kendo UI 自动完成功能,Kendo 自动完成功能会在服务器请求之上的每个按键上回调服务器方法。有没有办法使用自动完成手动回调服务器以获取数据源。

我的代码如下

 @(Html.Kendo().AutoComplete()
 .Name("patientSearch")
 .DataTextField("patientSearch")
 .MinLength(2)
 .Placeholder("Search by Lastname, Firstname or DOB")
 .HtmlAttributes(new { id = "textPatientSearch" })
 .Template("<B>${data.LastName}, ${data.FirstName} </B> - ${ kendo.toString(kendo.parseDate(data.DateOfBirth),'MM/dd/yyyy') } ")
 .DataSource(source =>
 {
    source.Read(read =>
    {
        read.Action("GetFilteredPatient", "Order").Data("onAdditionalData");
    })
    .ServerFiltering(true);
 }))

我找到了用于检查用户是否停止输入的 jquery 解决方案,代码如下:

$(function(){
        //setup before functions
        var typingTimer;                //timer identifier
        var doneTypingInterval = 2000;  //time in 3 ms

        //on keyup, start the countdown
        $('#textPatientSearch').keyup(function(e){
            clearTimeout(typingTimer);
            typingTimer = setTimeout(doneTyping, doneTypingInterval);
        });

        //on keydown, clear the countdown
        $('#textPatientSearch').keydown(function(){
            clearTimeout(typingTimer);
        });

        //user is "finished typing," do something
        function doneTyping () {
           **//WHAT TO DO HERE**
        }
    });

我不知道如何手动服务器过滤 doneTyping 功能上的自动完成功能,请帮助。

4

1 回答 1

7

最后,我找到了解决方案,Kendo UI 提供了延迟(默认值:200)方法,该方法接受以毫秒为单位的整数值,如果用户未能发送击键,则在指定的毫秒内等待下一次用户击键在指定的延迟时间内,剑道自动完成会自动触发服务器过滤。

于 2014-08-04T06:23:35.247 回答