0

ファイルの代わりにSPFoldersを検索する場合、またはカスタムコンテンツタイプを検索する場合、CAMLおよびSPQueryを使用した検索はカスタムメタデータに対して適切に機能しないようです。私はU2Uを使用してさまざまなクエリをテストしてきましたが、どこにも到達していません。ドキュメントはこのトピックについて完全ではなく、グーグルも役に立ちません。

あるテストでは、特定のカスタムコンテンツタイプであるSPFolderをツリー内で見つけようとしています。CAMLを正しく理解していれば、これは機能するはずです。

<Query>
    <Where>
        <Eq>
            <FieldRef Name='ContentType' />
            <Value Type='Text'>CustomTypeName</Value>
        </Eq>
    </Where>
</Query>

別のテストでは、カスタムメタデータプロパティが特定の値に設定されているSPFolderを見つけようとしています。

<Query>
    <Where>
        <Eq>
            <FieldRef Name='CustomProp' />
            <Value Type='Text'>SpecificPropValue</Value>
        </Eq>
    </Where>
</Query>

どちらの場合も、検索のルートを、フォルダーを含むドキュメントライブラリに設定しています。このライブラリには、フォルダーが含まれています。また、再帰的に検索するようにSPQueryを設定しています。

2つ下のステップで検索しているフォルダーは、ツリーの一番下にあります。問題のフォルダを手動で見つけるために、最後まで繰り返したくありません。

編集SPQueryを引数として使用するSPList.GetItemsと、引数としてSPSiteDataQueryを使用するSPWeb.GetSiteDataの両方を使用していることを知っておくと役立つ場合があります。現時点では、これらのクエリのいずれの検索セットにもフォルダが含まれていないようです。

どんな助けでも大歓迎です。

4

2 に答える 2

2

さらに調査した後、私は自分の質問に答えています。

どうやら、クエリに使用しているメソッドは、結果セットの項目として SPFolders を返さないようです。リスト アイテムのみが返され、基本的にはドキュメントのみが返されます。

私の修正は、特定のメタデータ タグ/値を持つすべてのドキュメントに対して CAML クエリを実行し、最初のドキュメントの親フォルダーをセットの代表フォルダーとして使用することでした。私のニーズには十分に対応しています。

于 2008-10-07T20:12:20.767 に答える
1

ツールセットにSharePoint ManagerStramit CAML Viewerを追加してみてください。

私は、CAML の問題を理解するために両方が非常に重要であることを発見しました。

于 2008-10-06T20:10:44.217 に答える