Как автофильтровать списки Sharpeoint с помощью SPServices

0

Я не уверен, что SPServices - это правильная структура, чтобы сделать следующее.

У меня есть страница приложения, которая по умолчанию покажет список sharepoint, который содержит 16 000 элементов. По умолчанию Он отображает первые 30 элементов списка на основе имени.

Я хочу поместить текстовое поле, которое, когда пользователь начнет печатать, сетка автоматически уменьшается без нажатия кнопки для обратной передачи.

Допустим, в списке sharepoint есть:

client code, client name, ClientOwner
0001, google, john smith
0002, dell, maria smith
0003, microsoft, bill gates

поэтому, как только я напечатаю sm, он должен показать первые 2 строки

Если это возможно с помощью SPService, пожалуйста, дайте мне знать, любой пример этого может быть полезен, я не прошу полный код, но, по крайней мере, отправную точку.

Теги:
sharepoint
caml
spservices

1 ответ

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>"
                    });
                }
            }
        });
    }
});
  • 0
    это отфильтровывает элементы списка, к которым у вас нет доступа автоматически?
  • 0
    Да, все сценарии на стороне клиента будут по своей сути брать на себя личность клиента. Таким образом, просмотр веб-службы из SharePoint вернет данные, урезанные системой безопасности, так же, как если бы пользователь перешел к списку в браузере.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню