WSS3SDK之演练--在mobile的显示窗体中定制列表项标题

本次演练中将向大家展示如何通过实现一个自定义RenderingTemplate控件来对mobile页面中字段的渲染进行定制。示例展示了如何在mobile的显示页面中定制通知列表的项的标题字段的显示。

正如先前在mobile页面渲染机制一节所描述的,一个Microsoft.SharePoint.MobileControls.SPMobileListFIEldSelector 模板选取器控件会被调用,并通过一条链的调用,最终找到显示在页面中的控件。

基于当前的列表类型和字段(比如本例中的通知和标题),该对象决定了哪个RenderingTemplate会用于在mobile显示页面上渲染该字段。

该控件搜寻 RenderingTemplate 对象名称 MobileCustomListField_ListTypeID_FieldType_Field,其中 ListTypeID 可以是当前列表类型的ID号(如105),也可以是SPListTemplateType枚举的一个值(如Contacts)。FieldType 是字段的数据类型。比如,Text或Number。Field 是字段的内部名称,比如WorkPhone。如果该ID不存在,则使用ID为MobileDefaultListField的 RenderingTemplate 对象。

WSS 3.0并没有内置ID为MobileCustomListField_Announcements_Text_Title的RenderingTemplate。在本次演练中,您将创建一个新的用于通知列表的列表项标题字段的模板,来替换默认模板。

定制通知项的标题:

在文本编辑器中,创建一个文本文件 (UTF-8),命名为AnnouncementsItemDisplayPageTitleField.ascx。存放在 Local_Drive:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES目录下。

添加下列指向标记到文件中:

<%@ Control Language="C#" %>
<%@ Assembly Name="Microsoft.SharePoint, Version=12.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=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register
TagPrefix="SPMobile" Namespace="Microsoft.SharePoint.MobileControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Import Namespace="Microsoft.SharePoint" %>

然后,在其下面添加一个RenderingTemplate 对象,设置其 ID 为 显示页面所搜索的 SPMobileWebTitle 对象的ID:MobileCustomListField_Announcements_Text_Title。

<SharePoint:RenderingTemplate RunAt="Server" ID="MobileCustomListField_Announcements_Text_Title" >
</SharePoint:RenderingTemplate>

在 RenderingTemplate 元素中,定义一个 Template 元素来包含一个 Label 子控件。设置label的属性如下:

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

保存并关闭该文件。

重启Internet Information Services (IIS) 。可以在命令行里使用iisreset命令来重启IIS。

如果您使用的是电脑上的设备模拟器,而不是真正的mobile设备,您可能还需要删除Internet临时文件。

通过您的设备或模拟器导航到某个通知列表。点击一项通知进入其显示页面。您将看到新定制的标题,正如下面的屏幕截图所示:

时间: 2024-12-30 18:55:43

WSS3SDK之演练--在mobile的显示窗体中定制列表项标题的相关文章

WSS3SDK之演练--在mobile页面中创建自定义字段渲染控件

本演练将展示如何通过自定义字段渲染控件关联一个RenderingTemplate来定制mobile页面上的字段渲染.下面的样例展示了如何定制通知列表项的标题字段在mobile的显示项目,新建项目和编辑项目页面中的渲染.根据3类页面的不同,定制化的内容也不一样: 显示窗体- 添加了一个搜索链接,使得用户可以导航到MSN新闻搜索结果页面. 编辑窗体- 当到期日期一栏的值小于当前日期时添加了默认文本. 新建窗体- 添加了默认文本来为用户展示待输入的值的特定格式. 必要要求 完成了前面的关于定制Mobi

tomcat 虚拟目录与显示目录中文件列表

原文http://www.cnblogs.com/jifeng/archive/2011/08/08/2130565.html 虚拟目录: 该方法推荐使用,比较简单. 在%tomcat%\conf\Catalina\localhost(该目录可能需要手工创建)下新建一个文件abc.xml,注意文件名中的abc就表示虚拟目录的名称,所以不可随意命名,该文件的内容为: <Context docBase="d:\myJsp" />重启Tomcat即可.   目录列表显示文件: 修

Delphi类的入门例子(8): 遍历窗体中所有控件的函数

//显示窗体中所有控件的函数 function GetCtrls(Control: TWinControl; List: TStringList): Boolean; var i: Integer; obj: TWinControl; begin for i := 0 to Control.ControlCount-1 do begin obj := TWinControl(Control.Controls[i]); List.Add(obj.Name); //如果控件中包含其他控件, 则递归调

设置C#子窗体在主窗体中居中显示

问题的开始是由C#传传看主群里的印醒提出来的,下面我来说一下解决方案吧 其实表面上看是很简单的 开始吧,现在有两个窗体Form1主窗体,Form2子窗体 而且我相信大部分人都会这样写 在子窗体的Load事件中 这样写 this.StartPosition = FormStartPosition.CenterParent; 其实这样写是不对的,正确的写法应该是 this.StartPosition = FormStartPosition.CenterScreen; 为什么是CenterScreen

让jQuery Mobile不显示讨厌loading界面的方法

 jQuery Mobile总是显示讨厌的loading界面,下面有个不错的解决方法,大家可以参考下 jQuery Mobile 的一个BUG: 当不采用 ajax 以及 他自己的 back 返回的时候,即: 点击浏览器后退按钮时,将会从缓存之中加载页面,此时,讨厌的 loading 动画出来了,而且一直不消失. 网上找了好多解决方法,搜索了好久都没有好用的,今天突然想起来个釜底抽薪,直接动jqeury-mobile 的类库.    用编辑器打开,    找到显示pageLoading的方法,

编程语言-c#我这样写代码后,为什么运行后窗体不显示picturebox中的图片,要怎样才能显示

问题描述 c#我这样写代码后,为什么运行后窗体不显示picturebox中的图片,要怎样才能显示 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace _134022

问一个java gui问题,在一个窗体中,两个conboBox,改变上一个,怎么让下面一个显示为空。

问题描述 问一个java gui问题,在一个窗体中,两个conboBox,改变上一个,怎么让下面一个显示为空. 问一个java gui问题,在一个窗体中,两个conboBox,改变上一个,怎么让下面一个显示为空.是看起来为空 解决方案 你需要把它们放在同一个panel里把 然后就可以得到你想要的结果

java-Java调用含窗口的OCX显示在Java的窗体中

问题描述 Java调用含窗口的OCX显示在Java的窗体中 现在遇到的情况是:有个带窗口的OCX提供一些接口给Java程序调用,需求是在Java实现的窗口调用某个接口的时候,就呈现OCX里某一个窗口,已知这个OCX窗口不是弹出框,需要有个父窗口进行承载 问题来了:接口调用成功,可是窗口并没有出现,接口的返回值是正常的,但是该弹出来的窗口没有弹出 解决方案 Java调用ocx控件以及dlljava项目中ocx控件的调用 解决方案二: 仍然是没用过的工具.不过猜测是不是没有调用"显示方法"

C# Winfrom项目,如何在from窗体中控制两个timer控件时间的同步显示

问题描述 C# Winfrom项目,如何在from窗体中控制两个timer控件时间的同步显示 在C# Winfrom项目中,一个from窗体,两个timer控件(timer1和timer2),两个Label控件(labe1和label2), timer1是实现0到1分钟的倒计时显示在显示labe1中,timer2是实现到1分钟后自动显示当前时间到label2中. 两个button控件(button1和button2).button1和button2分别控制timer1的开始和暂停. timer1