WSS3SDK之:如何定制mobile的列表视图和窗体页面

本节提供了关于定制mobile设备所访问的Windows SharePoint Services 3.0列表视图和窗体页面的基本过程概述。详细的步骤参加后面的演练文章。

正如先前在Mobile页面渲染机制一节所描述的,在mobile主页的页眉,内容区,页脚(导航区)中的每个控件都会导致一条链式调用,分别通过以下3个模板选择器控件来启动该调用。

  • SPMobileListTitle — 选择用于渲染页眉部分的RenderingTemplate控件。

  • SPMobileListContents — 选择用于主干部分的 RenderingTemplate 控件。

  • SPMobileListNavigation — 选择用于页脚部分的 RenderingTemplate 控件。

这些类的对象之一会根据当前的列表类型(如通知或其它自定义列表类型)和页面的类型来选取一个RenderingTemplate对象。

这些控件会搜寻下列格式的RenderingTemplate ID:

Mobile_ ListTypeID _ PageType _ PageArea

其中 ListTypeID 可以是当前列表类型的ID号(如105),也可以是SPListTemplateType枚举的一个值(如Contacts)。有两种方式来定义一个列表类型ID:

  • 如果列表是作为网站类型的一部分来在Onet.xml站点定义文件中指定的,则 ListTypeID 的值是Onet.xml中List元素的Type属性值。该文件位于这个目录下: Local_Drive:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\SITETEMPLATES\Site_Type\xml

  • 如果列表是通过UI添加到网站中的;也就是说,通过新建(列表)页,则 ListTypeID 为当初用作新列表类型基础的列表类型的ID。这取决于用户在创建页(create.aspx)上的点选,究竟是点击了哪个列表类型才进到新建页的。

PageType 可以是 ViewNewFormEditFormDispFormDeletePage

PageArea 可以是 TitleContentsNavigation

如果当前列表类型所指定的RenderingTemplate元素的ID没有找到,则他将使用ID为Mobile_Default_PageType_PageArea的控件。

创建一个包含一个自定义的页眉(Title),内容主体,或页脚(导航区域)的mobile列表视图或窗体页其实只需要创建一个渲染模板,其ID为对应得页面区域的模板选择器控件要搜索的ID。

已有的RenderingTemplate

当Windows SharePoint Services 3.0安装好后,下列的两个用于mobile主页的RenderingTemplates已经存在于MobileDefaultTemplates.ascx中。
  • Mobile_Comments_DeletePage_Navigation

  • Mobile_Comments_View_Navigation

  • Mobile_DiscussionBoard_DispForm_Contents

  • Mobile_DiscussionBoard_EditForm_Contents

  • Mobile_DiscussionBoard_EditForm_Navigation

  • Mobile_DiscussionBoard_NewForm_Navigation

  • Mobile_DocumentLibrary_View_Navigation

  • Mobile_Events_DispForm_Navigation

  • Mobile_Events_EditForm_Navigation

  • Mobile_Events_NewForm_Navigation

  • Mobile_Events_View_Contents

  • Mobile_Posts_DeletePage_Navigation

  • Mobile_WebPageLibrary_DispForm_Contents

  • Mobile_WebPageLibrary_DispForm_Navigation

您不应修改该 MobileDefaultTemplates.ascx 文件。您可以创建一个新的RenderingTemplate元素(在您自己的.ascx文件中),只有使用与已存在的渲染控件相同的ID即可。但是,这么做将会存在风险,可能会破坏其他部署在WSS中的依赖原来的RenderingTemplate对象的解决方案。

注意

Windows SharePoint Services 3.0自带的渲染控件会在自定义控件前先载入,所以当存在相同ID的自定义控件时,该控件模板的载入将覆盖原有的控件。如果有两个或更多的自定义控件模板 具有相同的ID,则文件名字母顺序排列在后面的将覆盖所有其他的。如果指定的文件中包含两个或更多的相同ID的渲染模板,则他们都将不被载入。

同时,下列默认的RenderingTemplate 对象也是定义在 MobileDefaultTemplates.ascx 文件中。如果运行时没有找到为当前列表类型定义的渲染模板,则会使用这些模板。如果您新建的 RenderingTemplate 对象使用这些 ID 上面提到的风险也是存在的。
  • Mobile_Default_DeletePage_Contents

  • Mobile_Default_DeletePage_Navigation

  • Mobile_Default_DeletePage_Title

  • Mobile_Default_DispForm_Contents

  • Mobile_Default_DispForm_Navigation

  • Mobile_Default_DispForm_Title

  • Mobile_Default_EditForm_Contents

  • Mobile_Default_EditForm_Navigation

  • Mobile_Default_EditForm_Title

  • Mobile_Default_NewForm_Contents

  • Mobile_Default_NewForm_Navigation

  • Mobile_Default_NewForm_Title

  • Mobile_Default_View_Contents

  • Mobile_Default_View_Navigation

  • Mobile_Default_View_Title

您可以嵌套 RenderingTemplate 对象。参见下面的示例。

自定义mobile列表视图或窗体的一部分

  1. 在 Microsoft Visual Studio, Notepad, 或任何文本编辑器中,新建一个用户控件文件(.ascx),放在路径 \Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES下。

  2. 在文件中添加若干page标记来注册和引用相应的命名空间。

  3. 添加一个渲染控件到 .ascx 文件,采用这样格式的ID:Mobile_ListTypeID_PageType_PageArea.

    • ListTypeID 可以是当前列表类型的ID号(如105),也可以是SPListTemplateType枚举的一个值(如Contacts)

    • PageType 可以为 ViewNewForm,EditForm, DispFormDeletePage

    • PageArea 可以为 TitleContentsNavigation

  4. 保存该 .ascx 文件并重新启动IIS,使更改生效。

示例

下面的例子展示了一个 RenderingTemplate 定义,其中还嵌套了另一个RenderingTemplate

<SharePoint:RenderingTemplate RunAt="Server" ID="Mobile_104_View_Navigation">
 
<Template>
 
<mobile:Link RunAt="Server" Text="ASP.NET Website" NavigateUrl="http://www.asp.net" />
 
<mobile:Label RunAt="Server" Text="" BreakAfter="True" />
 
<SPMobile:SPMobileComponent RunAt="Server" TemplateName="Mobile_Default_View_Navigation" />
 
</Template>
</SharePoint:RenderingTemplate>

posted @ 2008-07-21 18:23  Sunmoonfire  阅读(458)  评论(0编辑  收藏  举报