SharePoint デザイナーでクエリ値をパラメータとして挿入するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/353485

質問

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 で実行できますか?


アップデート:この方法で < と > をエスケープすることも失敗します。

&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;

アップデート:これは、 既知の問題 SoapDataSource コンポーネントと SOAP 呼び出しを使用します。どうやら、送信前に < と > をオーバーエンコードしているようです。回避策は、クエリ パラメーターを指定せずにデータ ソースを保存し、それをページに追加して、[共通データ ビュー タスク] ダイアログでフィルターを作成することです。次のフィルター文字列を使用してこれを機能させることができました。

[@ows_Title = 'Foo']

残念ながら、他のコントロール (ドロップダウン リストなど) を指すために使用できる DataSource ではなく、データ ビュー (データを表示) を追加しているため、これはあまり役に立ちません。

SharePoint Designer を使用してデータソースを配置できる、これに関する優れたソリューションをまだ探しています。

役に立ちましたか?

解決

SharePoint Designer にはバグがあります。このように Query オブジェクトを SOAPDataSource に渡すことはできません。XML はオーバーエンコードされます。これを修正するには、Visual Studio を使用する以外にできることはありません。

利用可能なホットフィックスがある場合はお知らせします。

誰かがこの回答を新しい回答で引用したい場合は、その回答を受け入れます。

他のヒント

クエリを XML エンコードしましたか?<、>、" などの文字を有効な XML になるようにエンコードする必要があると思います。:

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

そして

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

これ は、変数を使用して同様の問題に対処する方法を示しています。

リストの Title フィールドを操作しましたが、「Contains」を使用しない限り、値は返されません。

ただし、これではエラーが解決しない可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top