概述:我正在尝试根据SharePoint列表中的数据为文本框构建动态自动完成列表。
什么有效:
function GetAccounts()
{
var call = $.ajax({
url:
"../_api/Web/Lists/GetByTitle('Plans')/items?$select=Title,Account&$orderby=Title asc",
type: "GET",
dataType: "json",
headers: {
Accept: "application/json;odata=verbose"
}
});
call.done(function (data,textStatus, jqXHR){
var table = $('#results1').dataTable({
"aaData": data.d.results,
"aoColumns": [
{ "mData": "Title", "sClass": "dt-center","sTitle": "Plan Name" },
{ "mData": "Account","sClass": "dt-center", "sTitle": "Account",
"mRender": function (data, type, full) {
stemp = {
label: full.Title + ' (' + full.Account + ')',
value: full.Account
}
source.push(stemp);
return data;
}
}
]
});
}
);
}
这很棒,但我不需要数据表。如何丢失表但仍填充 stemp 对象。
提前致谢。
答案 0 :(得分:1)
谢谢!这是我的工作职能:
function GetAccounts()
{
var call = $.ajax({
url:
"../_api/Web/Lists/GetByTitle('Plans')/items?$select=Title,Account&$Top=3500&$orderby=Title asc",
type: "GET",
dataType: "json",
headers: {
Accept: "application/json;odata=verbose"
}
});
call.done(function (data,textStatus, jqXHR){
for(var i=0; i< data.d.results.length; i++){
var result = data.d.results[i];
var suggestion = {
label: result.Title + ' (' + result.Account + ')',
value: result.Account
};
source.push(suggestion);
}
}
);
}
答案 1 :(得分:0)
我不知道你是否真的要求。但是,也许这样的事情可行。
假设您正在使用jQuery的自动完成插件,您可以尝试这一点(注意 - 代码未经测试):
$("#autoComplete").autocomplete({
source: function(request, response){
var term = request.term; // get what user has typed into the text box
var call = $.ajax({
url: "../_api/Web/Lists/GetByTitle('Plans')/items"+
+"?$select=Title,Account&$orderby=Title asc"
+"&filter=startswith(Title, @term) or startswith(Account, @term)&@term='"+term+"'",
type: "GET",
dataType: "json",
headers: {
Accept: "application/json;odata=verbose"
}
});
call.done(function (data,textStatus, jqXHR){
var dataToSuggest = [];
var results = data.d.results;
for(var i=0; i< results.length; i++){
var result = result[i];
var suggestion = {
label: result.Title + ' (' + result.Account + ')',
value: result.Account
};
dataToSuggest.push(suggestion);
}
// call the response callback of the autocomplete with single value - items to be suggested
response(dataToSuggest);
}
);
}
});
通过调用autocomplete
函数,传递选项,在输入上启动插件。
选项对象有一个键source
,表示自动填充将如何获得建议。
根据文档,source
可以是一个函数。此函数有两个参数 - request
,其中包含用户输入到输入字段的术语和response
- 一个带有一个参数的回调 - 应该作为可供选择的选项呈现给用户的数据
我们提取用户提供的术语,并将其用作参数来过滤掉列表中的项目。我们通过将术语的值传递给OData查询的$filter
子句来实现这一点。
当执行并完成调用时,我们使用label
和值fields
获取从列表返回的数据并为自动完成构建对象 - 这将允许呈现友好字符串并使用选择时帐户为值。
创建项目后,我们将其推送到数组中 - dataToSuggest
。处理完所有项目后,我们可以使用我们创建的建议数组作为参数调用response
回调,自动完成功能应显示选项。
正如我所说,代码未经测试,可能需要进行一些调整,但我希望它能帮助您入门。我使用Autocomplete jQueryUI插件文档作为源代码。