如何:自定义移动页上的字段呈现

上次修改时间: 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

现有 RenderingTemplate

以下列表标识在安装 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 文件。您可以(在自己的 .ascx 文件中)创建同名的新 RenderingTemplate 元素,但这可能会中断在部署 SharePoint Foundation 时安装的、且依赖于原始同名 RenderingTemplate 元素的其他解决方案。

备注

SharePoint Foundation 附带的 RenderingTemplate 将在自定义呈现模板加载之前加载,因此当同名自定义呈现模板作为现有呈现模板之一加载时,它将替代原始模板。如果多个自定义 RenderingTemplate 元素同名,则其文件名称按字母顺序排在最后一位的元素将替代所有其他元素。如果特定文件具有两个或更多个同名的此类模板,则不会加载任何一个元素。

此外,已存在一个具有 ID MobileDefaultListField 的默认 RenderingTemplate 元素。如果未定义当前列表和字段的 RenderingTemplate,则运行时将使用该元素。如果您使用此名称创建一个新 RenderingTemplate,则会面临相同的风险。

自定义移动列表视图或表单页的某个部分

  1. 在 Microsoft Visual Studio 中,创建一个"空白 SharePoint 项目"。将其设置为服务器场解决方案,而不是沙盒解决方案。

  2. 向 TEMPLATE\ControlTemplates 中添加一个"SharePoint 映射文件夹"。

  3. 右键单击新文件夹,并添加一个 SharePoint"用户控件"。为该 .ascx 文件命名,使其与其他解决方案提供程序的名称区分开。例如 ContosoMobileRenderingTemplates.ascx。Visual Studio 会自动将该文件添加到 SharePoint 解决方案清单中,并将其设置为部署到 %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 枚举的值之一(如 Contacts)。

    • FieldType 是字段的数据类型,而 Field 是该字段的内部名称的名称。有关哪些内容可替换这些占位符的详细信息,请参阅移动页呈现系统

    您的呈现模板可以直接声明可呈现控件(如 Label 控件),也可以声明从 SPMobileBaseFieldControl 派生的类的呈现控件。

  7. 在"生成"菜单上,选择"部署解决方案"。这将自动保存 .ascx 文件,将其部署到 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATES\ControlTemplates,并回收 Web 应用程序,以便重新加载该文件夹中的所有 .ascx 文件。

示例

以下 RenderingTemplate 定义的示例演示如何为"Announcements"列表中的项目创建一个新的"Title"字段。有关详细示例,请参阅演练:自定义移动表单上的项目标题演练:为移动页面创建自定义字段呈现控件

<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 文件