演练:自定义移动列表视图页
上次修改时间: 2011年2月2日
适用范围: SharePoint Foundation 2010
本演练演示如何通过实现自定义 RenderingTemplate 控件来自定义移动列表视图页。此示例演示如何自定义该页的正文(内容)部分。有关如何自定义移动表单或列表视图页的任意部分的概述,请参阅如何:自定义移动列表视图和表单页。
如移动页呈现系统中所述,列表视图页的正文部分通过一系列调用来呈现,这一系列调用中的最后一次调用是调用名为 Mobile_ListTypeID_View_Contents 的 RenderingTemplate 对象,其中 ListTypeID 是列表定义的 ID 号或一个 SPListTemplateType 值。如果不存在具有此 ID 的 RenderingTemplate 对象,则使用具有 ID Mobile_Default_View_Contents 的 RenderingTemplate 对象。
在 Microsoft SharePoint Foundation 中,没有 ID 为 Mobile_Announcements_View_Contents(或 Mobile_104_View_Contents,它引用相同的列表类型)的 RenderingTemplate 类对象。在本演练中,您将创建一个用于在通知列表上方添加问候语的该类对象。
过程
自定义移动通知视图页的内容部分
在 Microsoft Visual Studio 中,创建一个"空白 SharePoint 项目"。使其成为场解决方案,而不是沙盒解决方案。
向 TEMPLATE\ControlTemplates 中添加一个"SharePoint 映射文件夹"。
右键单击此新文件夹,并添加一个 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 的相应子文件夹中。不会加载子文件夹中的移动呈现模板。
删除 .ascx.cs 和 .ascx.designer.cs(或 .ascx.vb 和 .ascx.designer.vb)文件。此项目不需要它们。
将 .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" %>
在这些指令的下方,添加一个 RenderingTemplate 对象,并为此对象分配一个视图页上的 SPMobileListContents 对象正在查找的 ID:Mobile_104_View_Contents。
<SharePoint:RenderingTemplate ID="Mobile_104_View_Contents" RunAt="Server" > </SharePoint:RenderingTemplate>
在 RenderingTemplate 元素中,定义一个具有 Label 子控件的 Template 元素。按以下代码所示设置标签的 Text 属性。
<Template> <SPMobile:SPMobileControlContainer RunAt="Server"> <SPMobile:SPMobileComponent RunAt="Server" TemplateName="MobileViewPicker" /> <SPMobile:SPMobileComponent RunAt="Server" TemplateName="MobileDefaultSeparator" /> </SPMobile:SPMobileControlContainer> <mobile:Label RunAt="Server" Text="Hello SharePoint Mobile User!"/> <SPMobile:SPMobileListItemIterator RunAt="Server" ListItemSeparatorTemplateName="MobileListItemSeparator" /> </Template>
在"生成"菜单上选择"部署解决方案"。这将自动保存 .ascx 文件,将其部署到 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATES\ControlTemplates,并回收 Web 应用程序,以便重新加载该文件夹中的所有 .ascx 文件。
使用您的设备或仿真程序导航到"通知"列表。您应会看到列表上方的问候语,如以下屏幕截图中所示: