次の方法で共有


カスタム プロパティを使用してコンテンツ クエリ Web パーツをカスタマイズする

最終更新日: 2010年9月22日

適用対象: SharePoint Server 2010

コンテンツ クエリ Web パーツを使用すると、多くのソースに対しクエリを実行して得たデータのカスタム ビューを作成し、1 か所にまとめて表示することができます。コンテンツ クエリ Web パーツを Web ページに追加すると、カスタム プロパティを設定して、Web パーツのクエリ動作、カスタム リスト、およびコンテンツ タイプをカスタマイズできます。ContentByQueryWebPart クラスで使用できるメソッドには 60 種類のプロパティとメソッドがあり、それらの多くはカスタマイズできます。このトピックでは、一部のプロパティについて説明し, .webpart ファイルに追加できる Collaborative Application Markup Language (CAML) 形式の構文と使用法の例を示します。

Microsoft SharePoint Server 2010 コンテンツ クエリ Web パーツのプロパティの一部は Microsoft SharePoint Foundation から継承され、他のプロパティは SharePoint Server 2010 に固有です。このトピックでは、SharePoint Server 2010 で導入されたプロパティに焦点を当てて説明します。次に示すのは、SharePoint Server 2010 コンテンツ クエリ Web パーツ プロパティの 2 つの基本的なカテゴリです。

  • Web パーツの基本動作の側面を設定または上書きするプロパティ。ユーザー インターフェイス (UI) に影響を与える場合もあります。

  • 基本動作を設定または上書きせずに、Web パーツの UI を変更するプロパティ。

UI および動作を変更するプロパティ

通常、最初のグループのプロパティ (上書きなど) は、Web パーツの動作の変更に使用できるので大きな影響力を持ちます。ユーザーが UI を変更したり、このプロパティが影響を与える動作に影響を与える可能性のある別のプロパティを設定したりしようとすると、このプロパティは UI 内で「優先」されます。つまり、このプロパティは、他の設定を上書きし、コンテンツ クエリ Web パーツの動作を決定します。これらのプロパティは、次の場合に役立ちます。

  • 固定フィールドおよびフィールド オプションを追加する。

  • UI 内のフィールドおよびフィールド オプションの変更を固定し、他の変更によって上書きまたは破棄できないように、既定のクロス リスト クエリの動作を上書きする。

  • 長い複合列名を一般的な XSLT 変換変数名に変更し、各スキーマでのカスタム XSLT 変換の作成を避ける。

UI と動作を変更するいくつかのプロパティを表 1 に示します。

表 1. UI および動作を変更するプロパティ

プロパティ

説明

CommonViewFields

追加フィールドを要求します。これは、コンテンツ クエリ Web パーツがすべての項目に対してすべてのフィールドを自動的に返すわけではないために必要になります。XSLT 変換で表示するには、フィールドを要求する必要があります。

このプロパティは付加的です。つまり、複数の CommonViewField をコンテンツ クエリ Web パーツに追加し、FieldDescriptionFieldLabel など、基本プロパティを拡張することができます。

QueryOverride

コンテンツ クエリ Web パーツ UI によるクエリ動作の制限を回避します。CAML のクロス リスト クエリのクエリ部分を指定することができます。

QueryOverride プロパティを設定すると、フィルタリング、並べ替え、およびグループ化のための UI がツール ウィンドウで利用できなくなります。たとえば、既定では、コンテンツ クエリ Web パーツは 3 つのフィルターを使用できますが、さらに多くのフィルターを追加して、UI のカスタマイズされたフィールドと動作を利用できるようにすることができます。

WebsOverride

クロス リスト クエリがサブサイトで再帰的に実行されるかどうかを指定します。既定では、SharePoint Server 2010 はサブサイトで再帰的に実行されます。つまり、親サイトとその子サイトが表示されます。

WebsOverride プロパティを設定すると、コンテンツ クエリ Web パーツは再帰的に実行されず、指定したサイトのみから結果が表示されます。

ListsOverride

SharePoint Server 2010 のリストの動作を上書きし、複数のリスト タイプ (ページ ライブラリ、一般のリストのベース タイプ、特定のリスト タイプなど) をサポートします。このカスタム プロパティを使用すると、テンプレートがルートで定義されていないか、ベース タイプであることから、リスト タイプが UI に列挙されない場合でも任意のリスト タイプを設定することができます。

リスト タイプは、Windows SharePoint Services 3.0 SDKの「List 要素」リファレンス トピックで定義されています。

ViewFieldsOverride

SharePoint Server 2010 で基本フィールドに対する自動要求を行うのではなく、指定したクエリから一連のフィールドを要求する機能をコンテンツ クエリ Web パーツに提供します。

DataColumnRenames

表示のためにデータが XSLT 変換に渡される前に、列名を変更する機能をコンテンツ クエリ Web パーツに提供します。

動作を無効にしないで UI を変更するプロパティ

一方、UI 内のフィールド、フィールド オプション、グループ化と並べ替えのオプション、およびフィルタ オプションをカスタマイズする簡便なオプションが必要になることがあります。これらのカスタマイズは基本的な動作には影響を与えず、動作を上書きする最初のグループのプロパティによって上書きできます。これらのカスタマイズは、次のことを行う場合に便利です。

  • Web パーツのインスタンスをページに追加した時点で最初に設定したオプション以外の追加オプションを、コンテンツ クエリ Web パーツをとおして提供する。

  • 上書きの対象になる可能性の低いただ 1 つの Web パーツに影響を与える。

  • エンド ユーザーが使用できるオプションを増やす。

表 2 では、このグループのプロパティについて説明します。

表 2. 動作を上書きしないプロパティ

プロパティ

説明

AdditionalFilterFields

AdditionalGroupAndSortFields

通常はフィルタ ドロップダウン リストの UI 内に表示されない 1 つまたは複数の追加フィールド (AdditionalFilterFields プロパティ) あるいはグループ化と並べ替えのオプション (AdditionalGroupAndSortFields プロパティ) が含まれます。これは、フィールドがサイト内の列として準備されていないが、一部のリストには存在し、UI で利用できるようにする場合に便利です。このプロパティを設定すると、UI はこの列をフィルタリングのために提供します。

FilterField1

FilterType1

FilterValue1

FilterOperator1

Filter1ChainingOperator

UI がサポートする値を超える値にフィルタを適用する機能を含みます。これらのプロパティを使用して、Web パーツが最初にページに追加されたときなどに、一部の UI 値を自動設定します。たとえば、既定値を指定し、今日の日付を基準にした日付範囲でフィルタを実行できます。

コンテンツ クエリ Web パーツをカスタマイズする方法

コンテンツ クエリ Web パーツのカスタム プロパティを設定または変更するには複数の方法があり、選択する方法は、目的とサイトおよび Web サイトのデザイン プロセス内のどの地点にいるかによって異なります。たとえば、既存のページ レイアウトをカスタマイズしている場合は、ページ レイアウトをカスタマイズする間に Microsoft SharePoint Designer 2010 を使用し、コンテンツ クエリ Web パーツをカスタマイズできます。また、既存のページ レイアウトに対して新しいカスタマイズされたコンテンツ クエリ Web パーツを作成している場合は、SharePoint Designer 2010 を使用して、カスタム プロパティを追加または変更できます。

既存のコンテンツ クエリ Web パーツのカスタム プロパティを変更するには, .webpart ファイルをエクスポートし、そのコピーを作成して、元の名前を変更し, .webpart ファイルのコピーのカスタム プロパティを変更してから、ページの Web パーツ領域にそれをインポートします。元の .webpart ファイルの名前を変更し、元の .webpart ファイルのコピーが将来のアップグレード シナリオで存在するようにします。

.webpart ファイルをエクスポートし、カスタム プロパティを設定して、インポートするには

  1. Web サイトにログオンします。

  2. [サイトの操作] メニューで、[ページの編集] をクリックします。

  3. ページでコンテンツ クエリ Web パーツを探し、Web パーツの [編集] メニューの [エクスポート] をクリックします。

  4. .webpart ファイルを保存します。

  5. .webpart ファイルの名前を変更し、テキスト エディターまたは SharePoint Designer 2010 を使用して名前が変更されたファイルを開きます。

    注意

    元の .webpart ファイルの名前を変更し、元の .webpart ファイルのコピーが将来のアップグレード シナリオで存在するようにします。

  6. プロパティおよびプロパティの値を追加または変更し、変更を保存します。

  7. [ページ] メニューの [Web パーツの追加] をポイントし、[参照] をクリックします。

  8. [Web パーツの一覧] からインポートする Web パーツを選択し、[OK] をクリックします。

  9. Web パーツをページの [Web パーツ領域] にドラッグします。

説明

このセクションでは、カスタム プロパティについて説明し、コンテンツ クエリ Web パーツ内のカスタム プロパティのステートメントと CAML クエリの書式設定とコード サンプルを示します。最初に、書式設定、基準フィールドに関する情報、および CommonViewFields プロパティを使用する場合のヒントについて説明します。次に、完全な CAML クエリを示し、設定する QueryOverride、ListsOverride、WebsOverride、および ViewFieldsOverride プロパティについて簡単に説明します。CAML クエリで提供される個別のプロパティ値を .webpart ファイルのそれぞれの <プロパティ値> ステートメントに追加することができます。最後に、DataColumnRenames プロパティとフィルター、グループ化、および並べ替えオプションのプロパティについて説明します。

CommonViewFields プロパティ

CommonViewFields プロパティをカスタマイズするときは 2 種類の書式を使用できます。次に示すように、フィールドに内部名、または内部名とフィールド名の組み合わせを指定することができます。

  • フィールドの内部名

  • フィールドの内部名, フィールド型

特殊文字に使用する表記法では UI 内で使用される名前と内部名が区別されます。たとえば、単語間のスペースは、内部名では _x0020_ によって表されます。フィールドを作成したら、[サイト内の列] ページのクエリ文字列パラメータを表示するか、Web パーツのコードを表示することによって、内部名を確認できます。フィールドでフィルタを実行する Web パーツを設定するか、Web パーツをエクスポートし、フィルタ プロパティを表示することによって、Web パーツのコードを表示できます。

注意

CommonViewField プロパティが要求できる追加の field types のリストについては、SharePoint Foundation 2010 SDK の SPFieldType 列挙を参照してください。また、SharePoint Server 2010 には、ユーザーが要求できるものとして HTML、Image、Link、および SummaryLink の 4 つが含まれています。このトピックで示す定数は、CommonViewFields プロパティが含むことのできるデータ型を示します。

CommonViewFields 定義を複合ステートメントに結合することもできます。これは、1 つのプロパティ ステートメントに複数のフィールドを設定する場合に便利です。定義を 1 つのステートメントに結合する場合は、次の例に示すようにセミコロンでフィールドを区切ります。

フィールドの内部名; フィールドの内部名, フィールド型

CommonViewFields は付加的なプロパティです。つまり、コンテンツ クエリ Web パーツが常に要求する基準フィールドの上部に共通の表示フィールドを追加することができます。基準フィールドは GUID によって既定の列を要求し、UI 内でサイト列名として表示されます。表 3 に、基準フィールド名とそのタイプを示します。

表 3. 基準フィールド名とタイプ

名前

種類

Title

テキスト

FileRef

ルックアップ

ID

カウンタ

Modified

日時

Author

"ユーザー"

Editor

ユーザー

Created

日時

PublishingRollupImage

イメージ

Level

"数"

Note

"メモ"

次の例では、CommonViewFields プロパティが GUID を設定します。SharePoint Server 2010 は、これを内部的に使用してフィールドの内部名、フィールドのタイプ、CommonViewField の内部名、およびベース タイプを参照します。その後にベース タイプの GUID が続きます。

<property name="CommonViewFields" type="string">_Level,Number;PublishingRollupImage;</property>

QueryOverride、ListsOverride、WebsOverride、および ViewFieldsOverride プロパティ

各上書きプロパティ (QueryOverride、ListsOverride、WebsOverride、および ViewFieldsOverride) は、既定のコンテンツ クエリ Web パーツの動作を上書きします。動作を上書きするには、設定する条件を定義する CAML クエリを構築します。

注意

CAML 構文とコマンドの詳細については、SharePoint Foundation 2010 SDK の「Collaborative Application Markup Language のコア スキーマ」を参照してください。

次の例では、CAML クエリを使用してコンテンツ クエリ Web パーツのカスタム プロパティを設定する方法について説明します。CAML クエリは次のことを行います。

  1. Created フィールドを取得します

  2. 過去 7 日間に更新されたアイテムを取得するようにクエリを設定し、降順に並べ替えます

  3. クエリを実行するリストのタイプを指定します

  4. 指定した Web サイトとその子から、再帰的にデータを取得します

  5. 各アイテムに対して表示するために、特定のフィールドの値を取得します

以下にクエリ全体を示し、後でそれについて詳しく説明します。

 1 <ViewFields>
 2   <FieldRef Name="Title" Nullable="True" Type="Text"/>
 3   <FieldRef Name="Comments" Nullable="True" Type="Note"/>
 4 </ViewFields>
 5 <Lists ServerTemplate="850"></Lists>
 6 <Webs Recursive="True" />
 7 <RowLimit>15</RowLimit>
 8 <![CDATA[
 9    <Where>
10     <Gt>
11       <FieldRef Name="Created" Nullable="True" Type="DateTime"/>
12       <Value Type="DateTime"><Today OffsetDays="-7"/></Value>
13     </Gt>
14   </Where>
15   <OrderBy>
16       <FieldRef Name="Created" Nullable="True" Type="DateTime"
17       Ascending="FALSE"/>
18   </OrderBy>]]> 

QueryOverride プロパティ

8 ~ 19 行目は QueryOverride プロパティを定義します。

 8 <![CDATA[
 9    <Where>
10     <Gt>
11       <FieldRef Name="Created" Nullable="True" Type="DateTime"/>
12       <Value Type="DateTime"><Today OffsetDays="-7"/></Value>
13     </Gt>
14   </Where>
15 <OrderBy>
16    <FieldRef Name="Created" Nullable="True" Type="DateTime"
17    Ascending="FALSE"/>
18 </OrderBy>
19 </Query>]]>

上記の例について説明します。

  • 8 ~ 10 行目はクエリを定義し、<where> 句を開きます。

  • 11 行目は "Created" という名前のベース タイプ フィールドを参照します。フィールド タイプは DateTime です。

  • 12 行目は、このフィールドの値を DateTime に設定し、オフセット -7 を設定します。つまり、クエリ フィルタを有効にした日付から 7 を引くことを示します。

  • 13 行目と 14 行目は <where> 句を閉じます。

  • 15 行目は、<OrderBy> 句を開き、フィールド内に指定された並べ替え順序を決定します。

  • 16 行目と 17 行目は "Created" フィールドの並べ替え順序を設定します。Web パーツは、このデータを降順で表示します。

ListsOverride プロパティ

CAML クエリを使用して、SharePoint Foundation 2010 および SharePoint Server 2010 リストから項目を取得することもできます。表 4 は、別個のリスト タイプから項目を取得する 3 つの CAML ステートメントの例を示します。

表 4. 別個のリスト タイプから項目を取得する 3 つの CAML ステートメントの例

リスト タイプ

プロパティのステートメント

ページ ライブラリ

<![CDATA[
   <Lists ServerTemplate="850">
   </Lists>
]]>

一般のリストのベース タイプ

<![CDATA[
         <Lists BaseType="0">
         </Lists>
]]>

特定タイプのリスト

<![CDATA[
   <Lists>
     <List ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}"/>
   </Lists>
]]>

上記の例で、5 行目は ListsOverride プロパティを定義します。

5 <Lists ServerTemplate="850"></Lists>

この場合、クエリは ServerTemplate="850" を使用して、現在使われているリストを上書きします。SharePoint Foundation 2010 SDK の Lists プロパティで、使用可能なリスト タイプの列挙を参照できます。

WebsOverride プロパティ

次のコード例で示すように、CAML を使用して、WebsOverride プロパティを設定し、項目を再帰的に取得することができます。

<![CDATA[
   <Webs Recursive="True"/>
]]>

または、指定したサイトからのみアイテムを取得できます。

<![CDATA[
   <Webs/>
]]>

上記の例の 6 行目では、アイテムを再帰的に取得するプロパティを設定します。

6 <Webs Recursive="True"/>

ViewFieldsOverride プロパティ

Web パーツの任意のアイテムの値を表示するには、次のコード例で示すように、ViewFieldsOverride プロパティを設定して、指定したフィールドから指定したタイプのデータを取得します。

<![CDATA[
   <FieldRef Name="Comments" Nullable="True" Type="Note"/>
   <FieldRef Name="Created" Nullable="False" Type="User"/>
]]>

Nullable="True" を設定すると、この列を持たない項目を返します。

コード サンプルの 1 ~ 4 行目では、ViewFieldsOverride プロパティを設定します。

1 <ViewFields>
2   <FieldRef Name="Title" Nullable="True" Type="Text"/>
3   <FieldRef Name="Comments" Nullable="True" Type="Note"/>
4 </ViewFields>
  • 1 行目は、<ViewFields> 句を開き、ViewFieldsOverride プロパティを設定します。

  • 2 行目と 3 行目は、Title フィールド (テキスト フィールド) と Comments フィールド (メモ フィールド) を参照します。

  • 4 行目は <ViewFields> セクションを閉じます。

DataColumnRename プロパティ

プログラムを使用して列の名前を変更するには、DataColumnRename プロパティを使用します。このプロパティは、XSLT とスキーマのカスタマイズを最小化する場合、あるいは一括またはユーザー設定による列の名前変更操作を実行する場合に便利です。たとえば、KBArticleTitle などの複合列名を Title などの共通の XSLT 変換変数名に変更して、各カスタム スキーマに対してカスタム XSLT 変換を作成しなくても済むようにすることができます。

列の名前変更の値はセミコロンで区切り、originalName,newName の形式を使用します。

<![CDATA[<property name="DataColumnRenames" type="string">KBArticleTitle,Title</property>]]

注意

既に存在する名前に列の名前を変更すると、名前変更操作は失敗します。

追加フィールド、フィルタ、グループ化、および並べ替えオプション

このグループ内にプロパティにプロパティを設定して、フィールド、グループ化、グループ化と並べ替えのオプション、フィルタ、およびフィルタ オプションを追加します。内部名、GUID、内部名と表示名と組み合わせ、または GUID と表示名の組み合わせを使用してフィールドを指定することができます。

次のいずれかの書式を使用して、AdditionalFilterFields および AdditionalGroupAndSortFields プロパティを定義します。

  • internalName

  • internalName,DisplayName

  • GUID

  • GUID,DisplayName

また、AdditionalFilterFields および AdditionalGroupAndSortFields 定義を複合ステートメントに結合することもできます。これは、プロパティ ステートメントに複数のフィールドを設定する場合に便利です。定義を 1 つのステートメントに結合する場合は、次の例に示すように、セミコロンを使用してフィールドを区切ります。

internalName;GUID; internalName,DisplayName;GUID,DisplayName

次のコード例で示すように、AdditionalFilterFields プロパティを設定すると、Created フィルタのフィールドを UI に追加できます。

<![CDATA[<property name="AdditionalFilterFields" type="string">Created</property>]]

AdditionalGroupAndSortFields プロパティを設定すると、Created オプションを UI のグループ化および並べ替えリストに追加できます。

<!CDATA[<property name="AdditionalGroupAndSortFields" type="string">Created</property>]]

フィルタ プロパティ

カスタム プロパティを使用して、UI がサポートする値を超える値にフィルタ値を拡張できます。フィルタ フィールド、フィルタの種類、フィルタ値、またはフィルタ チェーン演算子プロパティを設定または変更して、UI 内のフィルタの動作を追加または変更することができます。

注意

フィルタ プロパティは UI を上書きしません。既定値で UI を自動設定します。

フィルタ フィールド、フィルタの種類、およびフィルタ値プロパティは、常に string 型です。

  • <property name="FilterField1" type="string" />

  • <property name="FilterType1" type="string" />

  • <property name="FilterValue1" type="string" />

  • <property name="FilterOperator1" type="Microsoft.SharePoint.Publishing.WebControls.ContentByQueryWebPart+FilterFieldQueryOperator, Microsoft.SharePoint.Publishing, Version=12.0.0, Culture=neutral" PublicKeyToken=71e9bce111e9429c"/>

次のフィルター コードの例は、DateTime 書式の Created フィルターを表示し、2011 年 10 月 25 日以後に作成された項目を表示します。

  • <property name="FilterField1" type="string">Created</property>

  • <property name="FilterType1" type="string">DateTime</property>

  • <property name="FilterValue1" type="string">Today-7</property>

  • <property name="FilterOperator1" type="Microsoft.SharePoint.Publishing.WebControls.ContentByQueryWebPart+FilterFieldQueryOperator, Microsoft.SharePoint.Publishing, Version=12.0.0, Culture=neutral" PublicKeyToken=71e9bce111e9429c"/>

次の書式を使用して、フィルタ演算子とフィルタ チェーン演算子プロパティのステートメントの type パラメータを設定します。PropertyName、namespace、Version、Culture、PublicKeyToken

  • <property name="FilterOperator1" type="Microsoft.SharePoint.Publishing.WebControls.ContentByQueryWebPart+FilterFieldQueryOperator, Microsoft.SharePoint.Publishing, Version=12.0.0, Culture=neutral" PublicKeyToken=71e9bce111e9429c"/>

  • <property name="Filter1ChainingOperator" type="Microsoft.SharePoint.Publishing.WebControls.ContentByQueryWebPart+FilterField, Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">Eq</property>

次のように、フィルタ演算子とフィルタ チェーン演算子プロパティの有効な値は異なります。

  • フィルタ演算子プロパティは、UI 内に [AND] および [OR] ボタンで表示されます。

  • フィルタ チェーン演算子プロパティは、UI の [追加フィルタ] セクションの [次の条件でアイテムを表示する] ボックスの一覧の 2 番目のフィールドを設定します。

表 5 は、フィルター演算子プロパティの有効な値を示します。

表 5. フィルター演算子プロパティの有効な値

表示値

And

And

Or

Or

表 6 は、フィルター チェーン演算子プロパティの有効な値を示します。

表 6. フィルター チェーン演算子プロパティの有効な値

表示値

Eq

次の値に等しい

Neq

次の値に等しくない

Gt

次の値より大きい

Geq

次の値以上

Lt

次の値より小さい

Leq

次の値以下

BeginsWith

次の値で始まる

Contains

次の値を含む

関連項目

タスク

[方法] コンテンツ クエリ Web パーツ用に XSL をカスタマイズする

[方法] コンテンツ クエリ Web パーツにユーザー設定フィールドを表示する

[方法] コンテンツ クエリ Web パーツ用に RSS をカスタマイズする

参照

SPSiteDataQuery

ContentByQueryWebPart