Mettre à jour plusieurs éléments d’une liste en JavaScript

Parfois on  veut mettre à jour plusieurs éléments d’une liste. On récupère des éléments à travers une requête (Query), puis on met à jours les éléments, et enfin on commit.
Dans le exemple suivant : Nous avons une liste « Notification »  contient des notifications aux utilisateurs, Elle contient les colonnes suivantes :

IsShown : De type entier pour indiquer est-ce que la notification est vue par l’utilisateur ou non.

AssignedTo : Indique l’utilisateur concerné par la notification.

La fonction allRead permet de mettre à jour toute les notifications non lues en lues. Avec un seule appel asynchrone au serveur.

function allReadl() {
var clientContext = new SP.ClientContext.get_current();
//récupérer la liste  notification
var notificationList = clientContext.get_web().get_lists().getByTitle('Notification');
//création de requête  pour récupérer la liste des notifications non lues de l'utilisateur courant
var query = new SP.CamlQuery();
query.set_viewXml('<View Scope="Recursive"><Query>
<OrderBy><FieldRef Name="Created" Ascending="FALSE" /></OrderBy>
<Where>
<And>
<Eq><FieldRef Name="AssignedTo"></FieldRef><Value Type="Integer"><UserID /></Value></Eq>
<Eq><FieldRef Name="IsShown" /><Value Type="Number">0</Value></Eq>
</And></Where></Query></View>');
//liste des éléments
var unReadItems = notificationList.getItems(query);
clientContext.load(unReadItems);
clientContext.executeQueryAsync(function (sender, args) {
//succeed
var listItemEnumerator = unReadItems.getEnumerator();
// boucle sur l’enumérateur
while (listItemEnumerator.moveNext()) {
var oListItem = listItemEnumerator.get_current();
//mettre à jour l’élement
oListItem.set_item('IsShown', 1);
oListItem.update();
}
//envoi la requite au serveur
clientContext.executeQueryAsync(function (sender, args) {
//requête exécutée avec succès
}, function (sender, args) {
alert('erreur de mise à jour des éléments');
});
}, function (sender, args) {
alert('erreur de chargement des élément');
});
}

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s