程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WSS3SDK之如何定制mobile頁面中的字段渲染

WSS3SDK之如何定制mobile頁面中的字段渲染

編輯:關於.NET

本節將對Windows SharePoint Services 3.0 的mobile設備訪問頁面中的字段渲染定制過程做一個概述。詳細的步驟請參考隨後的演練。

前面的Mobile頁面渲染機制一節中我們說過,在頁面裡一個SPMobileListFIEldSelector模板選擇器控件的調用,會導致從該控件開始的鏈式的調用。

基於當前的列表類型和字段(比如本例中的通知和標題),該對象決定了哪個RenderingTemplate會用於在mobile顯示頁面上渲染該字段。

該控件會尋找名為MobileCustomListField_ListTypeID_FieldType_Field的RenderingTemplate。

FieldType 是字段的數據類型。可以在SPFieldType枚舉值中任意取值;比如,Text或Number。他也可以是一個在fldtypes*.xml文件中通過<Field Name="TypeName">元素定義的自定義字段類型。

Field 是字段的內部名稱,比如WorkPhone。如果該字段是作為列表的一部分在Schema.xml列表架構定義文件中指定的,則其內部名稱可以在Field元素的Name屬性中找到。該文件位於目錄: Local_Drive:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\Feature_Folder。如果字段是通過UI添加到列表中的;或者說是通過創建欄頁面,則 Field 是Microsoft.SharePoint.SPField.InternalName的屬性值,可以通過對象模型得到。

注意:

Field 是字段(欄)的內部名稱,不見得與字段的顯示名稱相同。對於用戶通過UI創建的字段來說,其內部名稱是系統根據用戶輸入的顯示名稱(在創建欄頁面的欄名稱 文本框中)生成的。如果該用戶在顯示名詞中包含空格或標點符號,那麼mobile模板渲染機制將無法使用其生成的內部名稱,因此您將無法對這樣的字段進行 渲染的定制。

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)上的點選,究竟是點擊了哪個列表類型才進到新建頁的。

如果指定的RenderingTemplate元素的ID沒有找到,則他將使用ID為MobileDefaultListFIEld的控件。

已有的RenderingTemplate

當WSS安裝好後,下列的兩個用於字段渲染的RenderingTemplates已經存在於MobileDefaultTemplates.ascx中。

MobileCustomListField_Contacts_Text_WorkPhone

MobileCustomListField_Contacts_Text_HomePhone

MobileCustomListField_Contacts_Text_CellPhone

MobileCustomListField_Contacts_Text_Email

MobileCustomListField_PictureLibrary_Computed_ImageSize

MobileCustomListField_Posts_DateTime_PublishedDate

您不應修改該 MobileDefaultTemplates.ascx 文件。您可以創建一個新的RenderingTemplate元素(在您自己的.ascx文件中),只有使用與已存在的渲染控件相同的ID即可。但是,這麼做將會存在風險,可能會破壞其他部署在WSS中的依賴原來的RenderingTemplate對象的解決方案。

注意:

WSS 3.0自帶的渲染控件會在自定義控件前先載入,所以當存在相同ID的自定義控件時,該控件模板的載入將覆蓋原有的控件。如果有兩個或更多的自定義控件模板 具有相同的ID,則文件名字母順序排列在後面的將覆蓋所有其他的。如果指定的文件中包含兩個或更多的相同ID的渲染模板,則他們都將不被載入。

同時,默認的RenderingTemplate 也就是ID為MobileDefaultListFiled對象也是定義在 MobileDefaultTemplates.ascx 文件中。如果運行時沒有找到為當前列表類型或字段定義的渲染模板,則會使用該模板。如果您新建的 RenderingTemplate 對象使用該 ID 則上面提到的風險也是存在的。

定制mobile列表視圖或窗體中的部分內容

在 Microsoft Visual Studio, Notepad, 或任何文本編輯器中,新建一個用戶控件文件(.ascx),放在路徑 \Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES下。

在文件中添加若干page標記來注冊和引用相應的命名空間。

添加一個渲染控件到 .ascx 文件,采用這樣格式的ID:MobileCustomListFIEld_ListTypeID_FieldType_Field。

其中的ListTypeID,FieldType,Field的取值詳見上文。

在您的渲染模板中可以直接聲明一些可渲染的控件,如Label控件。也可以定義通過繼承SPMobileBaseFieldControl類來定義一個渲染控件。

保存該 .ascx 文件並重新啟動IIS,使更改生效。

示例

下面的RenderingTemplate定義的例子展示了如何創建一個新的標題字段,用於通知列表的列表項。

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved