J'utilise le service Web GetListItems et il ne renvoie qu'environ 50% des résultats stockés. Y a-t-il une limite à la quantité de données pouvant être renvoyée? Y at-il de toute façon autour de ça?Service Web Sharepoint GetListItems ne retourne pas toutes les lignes
Répondre
La méthode récupère uniquement le nombre de lignes dans la vue par défaut de la liste. Pour résoudre ce problème, vous pouvez simplement augmenter le nombre de lignes dans votre vue par défaut, ou mieux encore, utiliser les requêtes CAML. Voici un article sur la façon d'utiliser CAML avec les services Web: http://dotnet.org.za/zlatan/archive/2007/08/01/collaborative-application-markup-language-caml-and-webservices-in-sharepoint-2007.aspx
Ce lien est cassé. Bummer. –
Référez this article que le nombre de lignes retournées est basé sur la vue que vous avez utilisée, Modifier la limite de ligne dans la vue.
Essayez ceci, SharePoint List Web Service GetListItems
De mon expérience, vous avez des options: 1. Changer la vue que vous utilisez lorsque vous appelez la méthode GetListItems à la vue correcte qui renvoie toutes les lignes 2. Cochez et vérifiez si vous avez placé une rowlimit dans votre méthode getlistitems. Si vous voulez retourner tout dans la vue courante que vous avez, vous pouvez utiliser "0" voir l'exemple ci-dessous: XmlNode doc = doclist.GetListItems ("Ma liste", "Ma vue", query, viewFields, "0", queryOptions , nul);
Vous pouvez également essayer d'accéder à votre site SharePoint, de vous rendre dans la liste à partir de laquelle vous sélectionnez et de modifier l'affichage par défaut/créer votre propre vue et développer le groupe Totaux. Sous le groupe Totaux, recherchez un identifiant unique pour votre liste (par exemple ID) puis dans la liste déroulante à côté sélectionnez COUNT puis sauvegardez votre vue. Une fois que les rechargements de liste comparent le nombre total qui sera maintenant affiché dans cette vue avec le nombre d'éléments renvoyés par votre requête. Faites-moi savoir si elles ne sont toujours pas les mêmes. :)
GetListItems() limite les résultats en fonction de la limite de ligne de la vue que vous utilisez comme deuxième paramètre dans l'appel de méthode. Si vous avez besoin de toutes les lignes à retourner:
- Allez sur votre site SharePoint en utilisant votre favori (ou moins favori) Navigateur Web
- Accédez à votre liste
- Sélectionnez la vue qui correspond au GUID que vous êtes en utilisant comme second paramètre de votre GetListItems appel de méthode() (voir exemple ci-dessous)
- Sélectionnez (dans le menu déroulant Afficher) « Modifier cette vue »
- faites défiler la liste vers le bas et d'élargir « Limite d'article "
- Set un nombre élevé (j'ai utilisé 9000) comme le "Nombre d'éléments à afficher" et sélectionnez "Limiter le nombre total d'éléments retournés au montant spécifié."
Cliquez sur OK.
Service.GetListItems (ListGuid, ViewGuid, requête, ViewFields, RowLimit, queryOptions, null);
Si le RowLimit paramètre méthode est inférieure à la vue Ligne limite que vous aviez mis en place dans SharePoint, les résultats sont limités à la valeur du paramètre.
Juste pour référence à d'autres personnes qui obtiennent ici de google.
J'ai besoin d'extraire des données d'un système hérité et d'avoir le même problème. La différence est que je n'ai pas de contrôle sur la liste des points de partage, donc je ne peux pas changer la vue par défaut.
var items = listSvc.GetListItems(listname, null, null, null, null, null);
var pager = items.ChildNodes[1].Attributes["ListItemCollectionPositionNext"] != null ? items.ChildNodes[1].Attributes["ListItemCollectionPositionNext"].Value : string.Empty;
var pagerXml = new XmlDocument();
pagerXml.InnerXml = "<QueryOptions><Paging ListItemCollectionPositionNext=\"\" /></QueryOptions>";
var pagerNode = pagerXml.GetElementsByTagName("QueryOptions")[0];
while (!string.IsNullOrEmpty(pager))
{
pagerNode.ChildNodes[0].Attributes[0].Value = pager;
var temp = listSvc.GetListItems(listname, null, null, null, null, pagerNode);
foreach (XmlNode c in temp.ChildNodes[1].ChildNodes)
{
var c2 = items.OwnerDocument.ImportNode(c, true);
items.ChildNodes[1].AppendChild(c2);
}
pager = temp.ChildNodes[1].Attributes["ListItemCollectionPositionNext"] != null ? temp.ChildNodes[1].Attributes["ListItemCollectionPositionNext"].Value : string.Empty;
}
Ceci est un code d'emploi du temps, donc je laisse au lecteur de ranger vers le haut: D
mais l'essentiel est, si vous ne pouvez pas l'obtenir dans un appel, il suffit obtenir en lots en utilisant la taille de la page d'affichage en tant que taille de lot. Le dernier argument de GetListItems()
accepte un paramètre XmlNode
et vous pouvez passer quelque chose comme:
<QueryOptions><Paging ListItemCollectionPositionNext="{paging-option}" /></QueryOptions>
où {paging-option}
est la valeur de l'attribut (même nom) de rs:data
Set MAXLIGNES à 0
var rowLimit = "0";
var result = client.GetListItems("ListName", null, query, viewFields, rowLimit, queryOptions, null);
Méfiez-vous des délais d'attente. Si vous avez beaucoup d'éléments dans votre liste SharePoint, vous pouvez cliquer sur timeout http. Les délais d'attente peuvent être modifiés dans IIS et web.config de votre site SharePoint.
- 1. SPListItemCollection.GetDataTable() ne retourne pas toutes les colonnes?
- 2. ColdFusion: Comment utiliser getListItems de SharePoint()
- 3. NHibernate HQL Join Ne retournant pas toutes les lignes requises
- 4. Sharepoint wsdl ne retourne pas le fichier WSDL, retourne la page normale au lieu
- 5. Pourquoi LIKE ne retourne pas les lignes pour les variables avec '%' à la fin?
- 6. Sharepoint recherche ne fonctionne pas
- 7. Les workflows Sharepoint ne démarrent pas
- 8. formulaire ne retourne pas toutes les valeurs mises à jour lors de l'édition
- 9. Service Web de recherche d'entreprise dans SharePoint
- 10. mysql SELECT COUNT (*) ... GROUP BY ... ne retourne pas les lignes où le nombre est zéro
- 11. UrlFilenameViewController ne retourne pas View (Spring MVC)
- 12. GetLocalValueEnumerator() Ne pas retourner toutes les propriétés
- 13. Informations d'identification du service Web SharePoint
- 14. La requête n'a pas retourné toutes les lignes
- 15. Retourne tous les champs et les lignes distinctes
- 16. .Service Web ne prend pas de paramètres pour l'appel XML
- 17. mod_rewrite ne retourne pas la valeur $ _GET?
- 18. Visual Studio étape dans ne retourne pas
- 19. traçage ASP.NET/WCF ne fonctionne pas dans Sharepoint
- 20. GetListItems Webservice ignore mon filtre de requête
- 21. extraction de sous-requête - Toutes les lignes
- 22. Le service Web ASP.NET ne fonctionne pas dans Safari
- 23. affichant toutes les lignes dans un calcul?
- 24. Sharepoint Designer ne pas ouvrir les fichiers HTML
- 25. pourquoi ne pointeur sur un tableau ne retourne pas comme **
- 26. ActiveResource tête de réponse d'erreur ne retourne pas le corps
- 27. Web Service ne peut pas trouver les espaces de noms SubSonic
- 28. Web Method retourne XML, comment lire les données de xml?
- 29. Définition d'un thème de site Sharepoint via un service Web?
- 30. `(cd X, PWD)` retourne parfois deux lignes
Pourriez-vous partager le mécanisme (code, si possible) que vous utilisez pour récupérer les données? De plus, combien d'articles récupérez-vous, et combien y a-t-il de total dans la liste? –