2008-12-09 18 views
0

J'essaie de créer une source de données dans SharePoint Designer qui se connecte à une liste SharePoint via des services Web XML. J'ai créé la source de données et connecté à la liste en question. Je peux voir toutes les données en utilisant GetListItems, et je veux le filtrer en utilisant le paramètre de requête.Comment insérer une valeur de requête en tant que paramètre dans le concepteur de sharepoint?

Le paramètre de requête prend un XmlNode, et quand je mets ce que la valeur que je reçois une erreur:

<Query> 
    <Where> 
     <Eq> 
      <FieldRef Name="Title" /> 
      <Value Type="Text">Foo</Value> 
     </Eq> 
    </Where> 
</Query> 

Bien sûr, je n'ai pas entré de pattes ou des sauts de ligne, comme je l'ai seulement de un champ de saisie de ligne dans SharePoint Designer. Je reçois une erreur avec cette requête:

The server returned a non-specific error when trying to get data from the data source. Check the format and content of your query and try again. If the problem persists, contact the server administrator.

Je veux simplement filtrer la liste des articles RESULTSET à ceux avec le champ Titre de « Foo ». Cela peut-il être fait dans SharePoint Designer?


Mise à jour: échapper à la < et> de cette manière échoue aussi:

&lt;Query&gt;&lt;Where&gt;&lt;Eq&gt;&lt;FieldRef Name=&quot;Title&quot; /&gt;&lt;Value Type=&quot;Text&quot;&gt;Foo&lt;/Value&gt;&lt;/Eq&gt;&lt;/Where&gt;&lt;/Query&gt; 

Mise à jour: Cela semble être un known issue avec des composants SoapDataSource et les appels SOAP. Apparemment, ils sur-encodent les < et les> avant qu'ils ne soient soumis. La solution de contournement fournie consiste à enregistrer la source de données sans paramètre de requête, puis à l'ajouter à la page et à créer un filtre dans la boîte de dialogue Tâches de vue de données communes. J'ai pu obtenir ce travail en utilisant la chaîne de filtre suivant:

[@ows_Title = 'Foo'] 

Malheureusement, cela ne me aide pas autant que j'ajoute une vue de données (montrant les données) plutôt que d'une source de données que je peux utiliser pour pointer vers d'autres contrôles (comme une liste déroulante).

Je suis toujours à la recherche d'une bonne solution à ce sujet qui me permet de placer une source de données en utilisant SharePoint Designer.

Répondre

1

Il y a un bogue dans SharePoint designer. Vous ne pouvez pas passer un objet de requête t o une SOAPDataSource comme celle-ci - le XML est surcodé. Rien que vous pouvez faire pour le réparer, sauf utiliser Visual Studio.

Je vous tiens au courant si un correctif est disponible.

Si quelqu'un veut citer cette réponse dans une nouvelle réponse, j'accepterai cette réponse.

1

Avez-vous codé XML la requête? Je crois que vous devez encoder des caractères comme <,> et "tel qu'il est XML valide, par exemple:

&lt;Query&gt;&lt;Where&gt; 

et

&lt;FieldRef Name=&quot;Title&quot; /&gt; 
+0

qui n'a pas fonctionné. –

+0

voir mes mises à jour - apparemment, cela est proche du problème, mais le SoapDataSources munges les données. D'autres pensées? –

+0

Désolé, non, pas encore au moins. N'a pas beaucoup travaillé avec la source de données SOAP. –

0

Après avoir travaillé avec la liste des champs Titre, il ne retourne pas les valeurs pour moi, si je « Contient ».

Cela peut ne pas corriger votre erreur cependant.

1

This montre comment les variables peuvent être utilisées pour résoudre un problème similaire.