2010-06-03 4 views
1

J'ai un scénario où je dois mettre à jour un élément de liste, mais je ne sais pas l'ID interne de l'élément de la liste - d'où ce qui suit ne marchera pas pour moi:SharePoint, comment mettre à jour un élément de liste d'un service Web à l'aide d'une clause where?

batchElement.InnerXml = "<Method ID='1' Cmd='Update'>" + 
      "<Field Name='ID'>" + id + "</Field>" + 
      "<Field Name='DeliveryStatus'>" + newStatus.ToString() + "</Field></Method>"; 

Au lieu de cela, j'ai une autre champ dans la liste appelée ProcessID:

Je voudrais mettre à jour le statut de livraison où ProcessID = X

Est-ce possible en utilisant les services Web SharePoint. Une solution à laquelle je pensais est de faire d'abord un select pour l'ID basé sur le ProcessID - puis la mise à jour basée sur cet ID, mais cela semble une solution folle, sûrement les inventeurs de MOSS CAML auraient fourni un moyen mettre à jour un élément de liste à l'aide d'une clause where, ou utiliser un autre champ pour filtrer plutôt qu'un simple identifiant?

Merci

+0

Je viens de remarquer un site SharePointOverflow EXISTE, comment puis-je migrer cette question? –

Répondre

1

Je ne crois pas que vous pouvez faire une UPDATE WHERE. Vous aurez besoin d'obtenir tous les éléments correspondant à votre ProcessID donné afin d'obtenir chacun des ID d'élément individuel. Comme vous utilisez des services Web, vous pouvez configurer la propriété ViewFields lorsque vous effectuez votre sélection afin de la limiter aux seules colonnes qui vous intéressent (dans ce cas, par exemple). , ID).

Exemple:

XmlDocument xmlDoc = new System.Xml.XmlDocument(); 
XmlNode ndQuery = xmlDoc.CreateNode(XmlNodeType.Element, "Query", ""); 
XmlNode ndViewFields = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", ""); 
XmlNode ndQueryOptions = xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", ""); 

ndQueryOptions.InnerXml = "<ViewAttributes Scope='Recursive' />"; 
ndViewFields.InnerXml = "<FieldRef Name='ID' />"; 
ndQuery.InnerXml = query; 
+0

merci pour la confirmation. Vous savez que SharePoint est vraiment nul. –

+0

Heh il a certainement des défauts. Bonne chance :) –

Questions connexes