次の方法で共有


モバイル ページでフィールド レンダリングをカスタマイズする

最終更新日: 2011年2月2日

適用対象: SharePoint Foundation 2010

このトピックでは、モバイル デバイスからアクセスできる Microsoft SharePoint Foundation ページでのフィールド レンダリングをカスタマイズする基本的な手順の概要について説明します。手順の詳細なチュートリアルについては、「[チュートリアル] モバイル フォームのアイテムのタイトルをカスタマイズする」および「[ウォークスルー] モバイル ページのカスタム フィールド レンダリング コントロールを作成する」を参照してください。

リスト ビュー ページあるいはフォームでのフィールドのレンダリングは、常に、ページの本文 (内容) 領域の SPMobilePageContents オブジェクトから始まります。「モバイル ページのレンダリング システム」で説明するように、このオブジェクトは、モバイル ページの対応する領域を表示する RenderingTemplate オブジェクトを最終的に呼び出す、一連の呼び出しの連鎖を開始します。これは、ほとんど常に、セグメント化された ID を持つ RenderingTemplate です。一致する名前の RenderingTemplate が見つからない場合は、既定のテンプレートが使用されます。これは、ランタイムが検索対象とする ID を持つ RenderingTemplate を作成することにより、フィールドのレンダリングをカスタマイズすることができるという意味です。

特にランタイムは、MobileCustomListField_ListTypeID_FieldType_Field というフォームの ID を持つ RenderingTemplate を検索します。

ListTypeID、FieldType、および Field の各プレースホルダーは、「セグメント化されたレンダリング テンプレート ID」で定義されています。

検索している ID を持つ RenderingTemplate が存在しない場合は、ID MobileDefaultListField を持つ RenderingTemplate が使用されます。

既存の RenderingTemplates

次の一覧は、SharePoint Foundation のインストール時に既に MobileDefaultTemplates.ascx または GwbMobileDefaultTemplates.ascx に存在する、フィールドのレンダリングで使用される RenderingTemplate を示しています。

  • MobileCustomListField_Contacts_Text_WorkZip

  • MobileCustomListField_PictureLibrary_Computed_ImageSize

  • MobileCustomListField_Posts_DateTime_PublishedDate

  • MobileCustomListField_Events_UserMulti_ParticipantsPicker

  • MobileCustomListField_CallTrack_DateTime_CallTime

  • MobileCustomListField_CallTrack_Computed_RefDetail

  • MobileCustomListField_Whereabouts_User_Name

MobileDefaultTemplates.ascx ファイルまたは GwbMobileDefaultTemplates.ascx ファイルは変更できません。新しい RenderingTemplate 要素を同じ名前で (自分の .ascx ファイルに) 作成することはできますが、SharePoint Foundation を展開したときにインストールされる他のソリューションが使えなくなる可能性があります。これは、同じ名前を持つオリジナルの RenderingTemplate 要素を使用していることから起こります。

注意

SharePoint Foundation に付属の RenderingTemplate の読み込みは、カスタム レンダリング テンプレートの読み込み前に行われます。このため、既存のレンダリング テンプレートと同じ名前を持つカスタム レンダリング テンプレートが読み込まれると、オリジナルのテンプレートは無効になります。同じ名前を持つカスタム RenderingTemplate 要素が複数ある場合、名前がアルファベット順で最後になるファイルにより、他のすべてのファイルが無効になります。あるファイルに同じ名前を持つテンプレートが複数ある場合は、どのテンプレートも読み込まれません。

また、ID MobileDefaultListField を持つ既定の RenderingTemplate 要素が既に用意されています。この要素は、現在のリストおよびフィールドに対して RenderingTemplate が定義されていない場合に必ずランタイムで使用されます。同じ名前で新しく RenderingTemplate を作成すると、同様のリスクが生じます。

モバイル リスト ビューまたはフォーム ページのセクションをカスタマイズするには

  1. Microsoft Visual Studio で、空の SharePoint プロジェクトを作成し、そのプロジェクトをサンドボックス ソリューションではなくファーム ソリューションにします。

  2. [SharePoint のマップされたフォルダー] を TEMPLATE\ControlTemplates に追加します。

  3. 新しいフォルダーを右クリックし、SharePoint ユーザー コントロールを追加します。.ascx ファイルに、他のソリューション プロバイダーの名前と簡単に区別できる名前 (ContosoMobileRenderingTemplates.ascx など) を付けます。Visual Studio により、ファイルが SharePoint Solution マニフェストに自動的に追加され、%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\ControlTemplates に展開されるように設定されます。

    ヒントヒント

    ソリューション エクスプローラーでプロジェクトを右クリックしてユーザー コントロールを追加しないでください。この方法でユーザー コントロールを追加すると、Visual Studio は、そのコントロールを TEMPLATE\ControlTemplates のサブフォルダーに追加します。その後、Visual Studio は、移動されなかったコントロールを、%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\ControlTemplates の対応するサブフォルダーに展開します。サブフォルダー内のモバイル版のレンダリング テンプレートは読み込まれません。

  4. .ascx.cs ファイルと .ascx.designer.cs (または .ascx.vb および .ascx.designer.vb) ファイルを削除します。これらのファイルはこのプロジェクトでは必要ありません。

  5. .ascx ファイルのディレクティブ セクション全体を次のマークアップで置き換えます。

    <%@ Register TagPrefix="GroupBoardMobile"   Namespace="Microsoft.SharePoint.Applications.GroupBoard.MobileControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Control Language="C#"   %> 
    <%@ Assembly Name="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
    <%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %> 
    <%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
    <%@ Register TagPrefix="SPMobile" Namespace="Microsoft.SharePoint.MobileControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
    <%@ Register TagPrefix="WPMobile" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    
  6. レンダリング テンプレートを .ascx ファイルに追加し、次のフォーマットで ID を指定します。MobileCustomListField_ListTypeID_FieldType_Field。

    • ListTypeID は、現在使用しているリスト形式の ID 番号 (例: 105)、または SPListTemplateType 列挙の値の 1 つ (例: Contacts) です。

    • FieldType はフィールドのデータ型で、Field はフィールドの内部名です。これらのプレースホルダーを置換することができるものの詳細については、「モバイル ページのレンダリング システム」を参照してください。

    レンダリング テンプレートは、Label コントロールのようにレンダリング可能なコントロールを直接宣言することも、SPMobileBaseFieldControl から派生したクラスのレンダリング コントロールを宣言することもできます。

  7. [ビルド] メニューで [ソリューションの展開] を選択します。これにより, .ascx ファイルが自動的に保存され、%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATES\ControlTemplates に展開され、Web アプリケーションがリサイクルされるので、そのフォルダーにあるすべての .ascx ファイルが再度読み込まれます。

次に示す RenderingTemplate の定義の例では、[お知らせ] リスト上のアイテムに新しいタイトル フィールドを作成する方法について説明しています。詳細な例については、「[チュートリアル] モバイル フォームのアイテムのタイトルをカスタマイズする」および「[ウォークスルー] モバイル ページのカスタム フィールド レンダリング コントロールを作成する」を参照してください。

<SharePoint:RenderingTemplate RunAt="Server" ID="MobileCustomListField_Announcements_Text_Title" >
  <Template>
    <mobile:Label Text="Title field in Announcements List" RunAt="Server" />
  </Template>
</SharePoint:RenderingTemplate>

関連項目

タスク

[チュートリアル] モバイル フォームのアイテムのタイトルをカスタマイズする

[ウォークスルー] モバイル ページのカスタム フィールド レンダリング コントロールを作成する

概念

[方法] ユーザー設定フィールド型の定義を作成する

Schema.xml ファイルについて

Onet.xml ファイルについて