SharePoint デザイナーでクエリ値をパラメータとして挿入するにはどうすればよいですか?
-
20-08-2019 - |
質問
XML Web サービス経由で SharePoint リストに接続するデータ ソースを SharePoint Designer で作成しようとしています。データソースを作成し、問題のリストに接続しました。GetListItems を使用してすべてのデータを表示でき、クエリ パラメーターを使用してデータをフィルターしたいと考えています。
クエリ パラメーターは XmlNode を受け取り、これを値として指定するとエラーが発生します。
<Query>
<Where>
<Eq>
<FieldRef Name="Title" />
<Value Type="Text">Foo</Value>
</Eq>
</Where>
</Query>
もちろん、SharePoint Designer には 1 行の入力フィールドしかないため、タブや改行は入力していません。次のクエリでエラーが発生します。
サーバーは、データソースからデータを取得しようとしたときに非固有のエラーを返しました。クエリの形式とコンテンツを確認して、再試行してください。問題が続く場合は、サーバー管理者に連絡してください。
私は単にリスト項目の結果セットをフィルタリングして、Title フィールドが「Foo」であるものにしたいだけです。これは SharePoint Designer で実行できますか?
アップデート:この方法で < と > をエスケープすることも失敗します。
<Query><Where><Eq><FieldRef Name="Title" /><Value Type="Text">Foo</Value></Eq></Where></Query>
アップデート:これは、 既知の問題 SoapDataSource コンポーネントと SOAP 呼び出しを使用します。どうやら、送信前に < と > をオーバーエンコードしているようです。回避策は、クエリ パラメーターを指定せずにデータ ソースを保存し、それをページに追加して、[共通データ ビュー タスク] ダイアログでフィルターを作成することです。次のフィルター文字列を使用してこれを機能させることができました。
[@ows_Title = 'Foo']
残念ながら、他のコントロール (ドロップダウン リストなど) を指すために使用できる DataSource ではなく、データ ビュー (データを表示) を追加しているため、これはあまり役に立ちません。
SharePoint Designer を使用してデータソースを配置できる、これに関する優れたソリューションをまだ探しています。
解決
SharePoint Designer にはバグがあります。このように Query オブジェクトを SOAPDataSource に渡すことはできません。XML はオーバーエンコードされます。これを修正するには、Visual Studio を使用する以外にできることはありません。
利用可能なホットフィックスがある場合はお知らせします。
誰かがこの回答を新しい回答で引用したい場合は、その回答を受け入れます。
他のヒント
クエリを XML エンコードしましたか?<、>、" などの文字を有効な XML になるようにエンコードする必要があると思います。:
<Query><Where>
そして
<FieldRef Name="Title" />
これ は、変数を使用して同様の問題に対処する方法を示しています。
リストの Title フィールドを操作しましたが、「Contains」を使用しない限り、値は返されません。
ただし、これではエラーが解決しない可能性があります。