我不确定SPServices是否是执行以下操作的正确框架。
我有一个应用程序页面,默认情况下会显示一个包含16,000个项目的sharepoint列表。 默认情况下,它会根据名称显示前30个列表项。
我想放一个文本框,当用户开始输入时,网格会自动缩小,而不会按下回发按钮。
让我们说共享点列表有:
client code, client name, ClientOwner
0001, google, john smith
0002, dell, maria smith
0003, microsoft, bill gates
所以,一旦我输入sm,它应显示前两行
如果SPService可以做到这一点,请告诉我,任何可以实现的例子都会有所帮助,我不是要求完整的代码,而是至少是一个起点。
答案 0 :(得分:1)
这是从我刚刚编写的库中获取的一些通用代码。基本上我在列表中存储了大量的链接,用户可以通过键入部分名称来搜索链接。
var input = "example string"
var comparisons = [];
var splitInput = this.input.split(" ");
for (var comparison in splitInput) {
if (splitInput[comparison].length > 0) {
comparisons.push(splitInput[comparison]);
}
}
if (comparisons.length == 0) {
return;
}
var comparisonString = "";
var levels = 0;
for (i = 0; i < comparisons.length; i++) {
if (comparisons.length > 1 && i < comparisons.length - 1) {
comparisonString += "<And>";
levels++;
}
comparisonString += "\
<Contains>\
<FieldRef Name='Title' />\
<Value Type='Text'>" + comparisons[i] + "</Value>\
</Contains>";
}
for (i = 0; i < levels; i++) {
comparisonString += "</And>";
}
var internalLinks = [];
var externalLinks = [];
$().SPServices({
operation: "GetListItems",
webURL: "/path/to/site",
listName: "exampleList",
async: false,
CAMLViewFields: '\
<ViewFields>\
<FieldRef Name="Title" />\
<FieldRef Name="Site_x0020_Address" />\
</ViewFields>',
CAMLQuery: '\
<Query>\
<Where>' + comparisonString + '</Where>\
<OrderBy>\
<FieldRef Name="Title" Ascending="True" />\
</OrderBy>\
</Query>',
CAMLRowLimit: 15,
completefunc: function (jqXHR, Status) {
$(jqXHR.responseXML).SPFilterNode("z:row").each(function (i, row) {
var _temp = $(row).attr("ows_Site_x0020_Address").split(", ");
if (_temp.length > 1 && _temp[0].length > 0 && _temp[1].length > 0) {
if (_temp[0].search("/mysite\.com/") < 0) {
externalLinks.push({
link: "<a href='" + _temp[0] + "'>" + _temp[1] + "</a>"
});
} else {
internalLinks.push({
link: "<a href='" + _temp[0] + "'>" + _temp[1] + "</a>"
});
}
}
});
}
});