【问题标题】:Kendo UI autocomplete dynamically loading dBdata when typing键入时 Kendo UI 自动完成动态加载 dBdata
【发布时间】:2016-10-10 12:54:04
【问题描述】:

我正在编写一个剑道 UI 自动完成小部件。要求是EACH TIME,当我在“minLength”之后键入一个字母时,需要从dB EVERYTIME动态加载dataSource。一个问题是,当dataSource第一次加载成功时,它会停止加载数据。

代码sn-p是:

var data;
function getDataFromDb(){
    // some code to grab dummyData from dB ...
    return dummyData;
}
$("#someInputText").kendoAutoComplete({
    minLength: 2,
    dataTextField: "someField",
    dataSource: getDataFromDb(),
    filter: "startswith"
});

非常感谢。

有关帖子的更多详细信息。在我的情况下,我不使用 readOption。数据来自另一个 ajax 调用,例如:

var data [];
//fire this ajax call when input string length comes to 4...
$.ajax({url: "some working url", success: function(result){
    var data = result;
    startKendoAutoComplete();
  }
});


function startKendoAutoComplete(){
    if( !$.isEmptyObject(data)) // set a breakPoint, have data
    {
        $("#inputText").kendoAutoComplete({
           minLength: 4,
           dataSource : data,
           ...
        });
    }
}

此外,当输入字符串长度达到 4 时,将触发 ajax 调用。但是,KendoAutoComplete 不会开始工作......

非常感谢您的建议。

【问题讨论】:

  • 我不明白,您要求每次用户键入内容时都从数据库动态加载数据,但只初始化一次数据并且您不想使用 readOptions...如果在初始加载后没有从服务器获取任何内容,如何重新加载数据?
  • 从 DB 动态加载 day 的原因是,数据非常庞大,来自真实应用程序的近百万行。最初加载数据是不可能/不可行/禁止的。此外,加载数据的唯一方法是通过给定的 ajax 调用。非常感谢您的所有回复。
  • 您如何期望在初始加载后重新加载一些过滤后的数据而不获取任何内容?
  • 过滤后的数据就像,如果我输入四个字母,数据大小是可以处理的。 (目前,我尝试输入三个字母并加载初始数据。如此巨大/缓慢,然后当我输入第四个字母时,Kendo autoComplete 开始工作。)然后,当我输入第四个字母。感谢您的帮助。欣赏。

标签: dynamic kendo-ui autocomplete datasource loading


【解决方案1】:

如果您使用对象数组初始化 dataSource,则您的小部件将仅使用此数组。

首先您必须创建一个数据源对象并将serverFiltering 属性设置为true。然后,如果您不指定将获取数据的 url,则设置您自己的 transport.read 函数,然后您将能够从那里实现自己的逻辑。 read 函数将接收readOption,其中将包含所有相关信息以查询游览数据(顶部/跳过/过滤/排序...)。 readOptions 还将提供一个 success 函数,用于返回值:

dataSource: {
    serverFiltering: true,
    transport: {
        read: function (readOptions) {
            readOptions.success(getDataFromDb(readOptions));
        }
    }
},

【讨论】:

  • 在您的答案中发布一些额外的代码/详细信息。感谢您的提示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-01
  • 2013-02-20
相关资源
最近更新 更多