OVH Cloud OVH Cloud

[WSS2003] Requêter sur une colonne d'une WebPart Library personnalisée

1 réponse
Avatar
sda
Bonjour,

J'ai ajouté une colonne comportant des choix dans une bibliothèque de
document. Toutes les bibliothèques ne comportent pas cette colonne. Or je
souhaite requêter l'ensemble des bibliothèques, ainsi que cette colonne
lorsqu'elle existe.

******************************************************************************
ListsService.Lists ls = new ListsService.Lists();

ls.Credentials = System.Net.CredentialCache.DefaultCredentials;

ls.Url = sUrl;

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 =
"<IncludeMandatoryColumns>True</IncludeMandatoryColumns>" +

"<DateInUtc>TRUE</DateInUtc>";

// Audience est ma colonne ajoutée

ndViewFields.InnerXml = "<FieldRef Name='Title'/><FieldRef
Name='Modified'/><FieldRef Name='Editor'/><FieldRef Name='Audience'/>";

ndQuery.InnerXml = "<Where><Neq><FieldRef Name=\"Audience\"/><Value
Type=\"Text\">Tout le monde</Value></Neq></Where>";

try

{

XmlNode ndListItems = ls.GetListItems(ListGUID, null, ndQuery,

ndViewFields, null, ndQueryOptions);

MessageBox.Show(ndListItems.OuterXml);

}

catch (System.Web.Services.Protocols.SoapException ex)

{

MessageBox.Show("Message:\n" + ex.Message + "\nDetail:\n" +
ex.Detail.InnerText +

"\nStackTrace:\n" + ex.StackTrace);

}

************************************************************************************

Ma question:

Comment tester l'existence de cette colonne, car si elle n'existe pas je
tombe en exception ?

Merci

SDA

1 réponse

Avatar
Renaud COMTE [MVP]
votre reponser est dans votre question
il vous faut requeter en premier le schema de votre liste pour controller







methode :GetList de http://<server-url>/_vti_bin/lists.asmx

Renaud COMTE [MVP]

Bonjour,

J'ai ajouté une colonne comportant des choix dans une bibliothèque
de document. Toutes les bibliothèques ne comportent pas cette colonne.
Or je souhaite requêter l'ensemble des bibliothèques, ainsi que cette
colonne lorsqu'elle existe.

**********************************************************************
******** ListsService.Lists ls = new ListsService.Lists();

ls.Credentials = System.Net.CredentialCache.DefaultCredentials;

ls.Url = sUrl;

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 > "<IncludeMandatoryColumns>True</IncludeMandatoryColumns>" +

"<DateInUtc>TRUE</DateInUtc>";

// Audience est ma colonne ajoutée

ndViewFields.InnerXml = "<FieldRef Name='Title'/><FieldRef
Name='Modified'/><FieldRef Name='Editor'/><FieldRef
Name='Audience'/>";

ndQuery.InnerXml = "<Where><Neq><FieldRef Name="Audience"/><Value
Type="Text">Tout le monde</Value></Neq></Where>";

try

{

XmlNode ndListItems = ls.GetListItems(ListGUID, null, ndQuery,

ndViewFields, null, ndQueryOptions);

MessageBox.Show(ndListItems.OuterXml);

}

catch (System.Web.Services.Protocols.SoapException ex)

{

MessageBox.Show("Message:n" + ex.Message + "nDetail:n" +
ex.Detail.InnerText +

"nStackTrace:n" + ex.StackTrace);

}

**********************************************************************
**************

Ma question:

Comment tester l'existence de cette colonne, car si elle n'existe pas
je tombe en exception ?

Merci

SDA