Kastomizowanie SharePoint z użyciem JavaScript – Walidacja duplikatów

Kontynuujemy cykl artykułów poświęconych kastomizowaniu rozwiązań SharePoint z użyciem kodu JavaScript. Dzisiaj postaram się przedstawić możliwości dodatkowej walidacji dokumentów będących duplikatami już istniejących elementów. Jeżeli więc zależy wam, by nie dodać drugi raz takiego samego elementu do listy lub biblioteki dokumentów warto skorzystać z opisanej funkcji.

duplicates

Wymagania

Do realizacji tego zadnia będziemy potrzebować biblioteki jQuery. Bibliotekę możecie pobrać z oficjalnej strony jQuery. Co ważne należy pobrać wersję skompresowaną oraz dodać ją do biblioteki dokumentów gdzie będziemy przechowywać nasz kod w pliku txt.

W tym wypadku potrzebna nam będzie dodatkowo biblioteka SPServices dostępna na portalu CodePlex. Należy ją pobrać w wersji skompresowanej oraz umieścić w wcześniej użytej bibliotece.

Będziemy chcieli wykryć dokumenty już istniejące w oparciu o pole Title.

Przykładowy kod

Poniżej prezentuję funkcję, która umożliwia przeszukać listę w oparciu o zapytanie CAML i zwraca odnalezione wyniki. Funkcja ta pozwala nam przeszukać aktualną listę, do ktorej dodajemy element, ale również możemy przeszukać zupełnie inną listę. Oczywiście efekt końcowy może być zależny od naszych potrzeb. Możemy na przykład podać link do elementu, aby użytkownik mógł go otworzyć w nowym oknie.

function PreSaveAction() {
var uniqenameCurr = $("input[title='NazwaWyswietlanaKolumny']").val();
    $().SPServices({
    operation: "GetListItems",
    async: false,
    listName: "NazwaListyWKtorejSzukamy",
    CAMLRowLimit: 0,
    CAMLViewFields: "<ViewFields><FieldRef Name='Title' /></ViewFields>",
    completefunc: function (xData, Status) {
           $(xData.responseXML).SPFilterNode("z:row").each(function() {
           if ((uniqenameCurr) == $(this).attr("ows_Title")) {
               var liHtml = "<li>" + $(this).attr("ows_Title") + "</li>"
               $("#tasksUL").append(liHtml);
               alert("Błąd - element już istnieje");</pre>
           }
           });
   }
   });
}

</script>
<ul id="tasksUL"/>

Dokumentacja

Pełna dokumentacja użytej funkcji jest dostępna na Codeplex.

Leave a Reply

Your email address will not be published. Required fields are marked *