WSS页面定制系列(2)---定制单个列表的表单页面
生活随笔
收集整理的這篇文章主要介紹了
WSS页面定制系列(2)---定制单个列表的表单页面
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個主題的曾經寫過一篇:WSS3.0開發--頁面定制(1)--修改列表的表單頁面
這篇文章講訴了如何通過修改RenderingTemplate來定制整個Farm的表單頁面,本篇將講訴如何定制單個的表單頁面。
定制單個的表單頁面有幾種方式:
1)采用SPD+RenderingTemplate
2)完全采用SPD
3)采用UserControl
本篇將講述方式1和2。
大家可以通過WSS3.0開發--頁面定制(1)--修改列表的表單頁面 來了解wss模板定制的一般步驟。
以wss里面的通知列表為例,這里,我們一步步的來修改一下通知列表的查看頁面(DispForm.aspx)。
系統默認的通知列表樣式如下:
我們要把它改成這個樣子:
采用SPD+RenderingTemplate 定制表單頁面
<TemplateName?xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">CodeArt_NoticeTemplate</TemplateName>
CodeArt_NoticeTemplate.ascx
<%@?Control?Language="C#"?AutoEventWireup="false"?%>
<%@?Assembly?Name="Microsoft.SharePoint,?Version=12.0.0.0,?Culture=neutral,?PublicKeyToken=71e9bce111e9429c"?%>
<%@?Register?TagPrefix="SharePoint"?Assembly="Microsoft.SharePoint,?Version=12.0.0.0,?Culture=neutral,?PublicKeyToken=71e9bce111e9429c"
????Namespace="Microsoft.SharePoint.WebControls"?%>
<SharePoint:RenderingTemplate?ID="CodeArt_NoticeTemplate"?runat="server">
????<Template>
????????<table?width="100%"?border="0"?cellspacing="0"?cellpadding="0">
????????????<tr>
????????????????<td?class="FormToolBar">
????????????????????<SharePoint:InformationBar?ID="InformationBar1"?runat="server"?/>
????????????????????<SharePoint:FormToolBar?ID="FormToolBar1"?runat="server"?Visible="false"?/>
????????????????</td>
????????????</tr>
????????</table>
????????<table?width="95%"?border="0"?cellspacing="8"?cellpadding="0">
????????????<tr>
????????????????<td?align="center"?height="30px"?class="title">
????????????????????<b>
????????????????????????<SharePoint:FormField??ID="FormField1"?runat="server"?FieldName="Title"?/>
????????????????????</b>
????????????????</td>
????????????</tr>
????????????<tr>
????????????????<td?align="right">
????????????????????<SharePoint:CreatedModifiedInfo??ID="CreatedModifiedInfo1"?runat="server"?/>
????????????????</td>
????????????</tr>
????????????<tr>
????????????????<td?height="1"?align="center"?class="seprow">
????????????????</td>
????????????</tr>
????????????<tr>
????????????????<td?valign="top"?class="content">
????????????????????<SharePoint:FormField?ID="FormField2"?runat="server"?FieldName="Body"?/>
????????????????</td>
????????????</tr>
????????????<tr>
????????????????<td>
????????????????????<table?border="0"?cellspacing="0"?cellpadding="0">
????????????????????????<tr>
????????????????????????????<td>
???????????????????????????????? </td>
????????????????????????????<td>
????????????????????????????????<table?border="0"?cellspacing="0"?cellpadding="0">
????????????????????????????????????<SharePoint:FormComponent?ID="FormComponent1"?TemplateName="AttachmentRows"
????????????????????????????????????????runat="server"?/>
????????????????????????????????</table>
????????????????????????????????<SharePoint:AttachmentUpload?Visible="false"?ID="AttachmentUpload1"?runat="server"?/>
????????????????????????????</td>
????????????????????????</tr>
????????????????????</table>
????????????????</td>
????????????</tr>
????????????<tr>
????????????????<td>
????????????????</td>
????????????</tr>
????????????<tr>
????????????????<td?align="center">
????????????????????<table>
????????????????????????<tr>
????????????????????????????<td>
????????????????????????????????<SharePoint:GoBackButton?ID="GoBackButton2"?Visible="false"
????????????????????????????????????runat="server"?/>
????????????????????????????????<input?type="button"?value='?返?回?'?onclick="javascript:CloseWindow();return?false;"?/>
????????????????????????????????<!--img?src="/_wpresources/DisForm/b_close.gif"?οnclick="javascript:IsCloseWindow();return?false;"?width="122"?height="25"-->
????????????????????????????</td>
????????????????????????</tr>
????????????????????</table>
????????????????</td>
????????????</tr>
????????????<tr>
????????????????<td?align="center">
???????????????????? </td>
????????????</tr>
????????</table>
????????<script?language="javascript">
function?CloseWindow()
{
????if(?window.opener?!=?null?)?
????{
????????self.close();
????}
????else
????{
????????history.back(-1);
????}
}
????????</script>
????</Template>
</SharePoint:RenderingTemplate>
ok,你可以刷新頁面看效果了。
CodeArt_NoticeTemplate.ascx里面的內容重點關注以下標簽:
?<SharePoint:FormField?ID="FormField1"?runat="server"?FieldName="Title"?/> FormField是一個服務器控件,用它可以呈現一個字段的現實,編輯。FieldName來指定字段名,這個字段名一般是內部名(InternalName),InternalName
的獲取可以采用SharePoint Manager 2007 或Caml Builder之類的軟件或自己寫點代碼來獲取.
?<SharePoint:CreatedModifiedInfo ID="CreatedModifiedInfo1"?runat="server"?/> 這個很好理解,它顯示列表項目的創建修改信息.
?<SharePoint:AttachmentUpload?Visible="false"?ID="AttachmentUpload1"?runat="server"?/> 這個是用來傳附件的.既然我們改的是查看頁面,不需要上傳的功能,就把它隱藏掉了(Visible=false).
<table?border="0"?cellspacing="0"?cellpadding="0">
??????? <SharePoint:FormComponent ID="FormComponent1"?TemplateName="AttachmentRows"
????????????????????????????????????????runat="server"?/>
</table> 雖然上傳附件不需要,但是顯示已經上傳的附件還是需要的,這個就是來實現顯示附件的.
它實際并沒有什么內容.它的內容是有另外的模板AttachmentRows來實現的,查找DefaultTemplates.ascx可以找到這個模板:
<SharePoint:RenderingTemplate?ID="AttachmentRows"?runat="server">
????<Template>
????????<TR?id=idAttachmentsRow>
????????<TD?nowrap="true"?valign="top"?class="ms-formlabel"?width="20%">
????????<SharePoint:FieldLabel?FieldName="Attachments"?runat="server"/>
????????</TD>
????????<TD?valign="top"?class="ms-formbody"?width="80%">
????????????<SharePoint:AttachmentsField?FieldName="Attachments"?runat="server"/>
????????????<SCRIPT>
????????????var?elm?=?document.getElementById("idAttachmentsTable");
????????????if?(elm?==?null?||?elm.rows.length?==?0)
????????????????document.getElementById("idAttachmentsRow").style.display='none';
????????????</SCRIPT>
????????</TD></TR>
????</Template>
</SharePoint:RenderingTemplate>
??<SharePoint:GoBackButton ID="GoBackButton2"?Visible="false"????????????????????????????????????runat="server"?/> 這個用來返回列表頁面.我們自己的按鈕代替了它,所有也把它Visible掉了.
以上的模板不但可以用在查看頁面,其他頁面也是可以 通用的.如果要用到保存頁面,需要在模板里加一個保存控件:
<SharePoint:SaveButton?runat="server"/>
修改保存頁面,(NewForm.aspx或EditForm.aspx)的ListFormWebPart的TemplateName為CodeArt_NoticeTemplate.
可以看一下效果:
采用RenderingTemplate定制的模板可以在多個表單頁面復用,如果拋棄復用性,完全可以全部用SPD實現.
<WebPartPages:WebPartZone?Visible="false"?runat="server"?FrameType="None"?ID="Main"
<asp:Content?ContentPlaceHolderId="PlaceHolderMain"?runat="server">
<SharePoint:FormField??ID="FormField1"?runat="server"?FieldName="Title"?/>
<hr/>
<SharePoint:FormField?ID="FormField2"?runat="server"?FieldName="Body"?/>
<br/>
?<SharePoint:SaveButton?runat="server"?ID="save"?/>
?<SharePoint:GoBackButton?ID="GoBackButton2"????????????????????????????????????runat="server"?/>
</asp:Content>
ok,結束.
有的人可能要問了:這樣定制是不錯,但是會喪失很多wss的功能,比如列表可以動態增加字段,這些動態的字段怎么顯示出來呢?
這就要用到ListFieldIterator這個控件了,只要把以下代碼嵌入你的模板即可:
<SharePoint:ListFieldIterator?runat="server"/>
要實現完美的定制表單頁面,大家最好去研究一下DefaultTemplates.ascx的內容.并要著重研究ListForm模板,所有的List的表單默認都是基于這個模板的.
ListForm
<SharePoint:RenderingTemplate?ID="ListForm"?runat="server">
????<Template>
????????<SPAN?id='part1'>
????????????<SharePoint:InformationBar?runat="server"/>
????????????<wssuc:ToolBar?CssClass="ms-formtoolbar"?id="toolBarTbltop"?RightButtonSeparator=" "?runat="server">
????????????????????<Template_RightButtons>
????????????????????????<SharePoint:NextPageButton?runat="server"/>
????????????????????????<SharePoint:SaveButton?runat="server"/>
????????????????????????<SharePoint:GoBackButton?runat="server"/>
????????????????????</Template_RightButtons>
????????????</wssuc:ToolBar>
????????????<SharePoint:FormToolBar?runat="server"/>
????????????<TABLE?class="ms-formtable"?style="margin-top:?8px;"?border=0?cellpadding=0?cellspacing=0?width=100%>
????????????<SharePoint:ChangeContentType?runat="server"/>
????????????<SharePoint:FolderFormFields?runat="server"/>
????????????<SharePoint:ListFieldIterator?runat="server"/>
????????????<SharePoint:ApprovalStatus?runat="server"/>
????????????<SharePoint:FormComponent?TemplateName="AttachmentRows"?runat="server"/>
????????????</TABLE>
????????????<table?cellpadding=0?cellspacing=0?width=100%><tr><td?class="ms-formline"><IMG?SRC="/_layouts/images/blank.gif"?width=1?height=1?alt=""></td></tr></table>
????????????<TABLE?cellpadding=0?cellspacing=0?width=100%?style="padding-top:?7px"><tr><td?width=100%>
????????????<SharePoint:ItemHiddenVersion?runat="server"/>
????????????<SharePoint:ParentInformationField?runat="server"/>
????????????<SharePoint:InitContentType?runat="server"/>
????????????<wssuc:ToolBar?CssClass="ms-formtoolbar"?id="toolBarTbl"?RightButtonSeparator=" "?runat="server">
????????????????????<Template_Buttons>
????????????????????????<SharePoint:CreatedModifiedInfo?runat="server"/>
????????????????????</Template_Buttons>
????????????????????<Template_RightButtons>
????????????????????????<SharePoint:SaveButton?runat="server"/>
????????????????????????<SharePoint:GoBackButton?runat="server"/>
????????????????????</Template_RightButtons>
????????????</wssuc:ToolBar>
????????????</td></tr></TABLE>
????????</SPAN>
????????<SharePoint:AttachmentUpload?runat="server"/>
????</Template>
</SharePoint:RenderingTemplate>
這篇文章講訴了如何通過修改RenderingTemplate來定制整個Farm的表單頁面,本篇將講訴如何定制單個的表單頁面。
定制單個的表單頁面有幾種方式:
1)采用SPD+RenderingTemplate
2)完全采用SPD
3)采用UserControl
本篇將講述方式1和2。
大家可以通過WSS3.0開發--頁面定制(1)--修改列表的表單頁面 來了解wss模板定制的一般步驟。
以wss里面的通知列表為例,這里,我們一步步的來修改一下通知列表的查看頁面(DispForm.aspx)。
系統默認的通知列表樣式如下:
我們要把它改成這個樣子:
采用SPD+RenderingTemplate 定制表單頁面
第一步--修改表單頁面默認模板:
用SPD打開要修改的頁面(DispForm.aspx),找到ListFormWebPart,修改其TemplateName屬性為CodeArt_NoticeTemplate,如下:<TemplateName?xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">CodeArt_NoticeTemplate</TemplateName>
第二步--編寫新模板:
將一下的內容保存到12\TEMPLATE\CONTROLTEMPLATES\CodeArt_NoticeTemplate.ascx文件中:CodeArt_NoticeTemplate.ascx
<%@?Control?Language="C#"?AutoEventWireup="false"?%>
<%@?Assembly?Name="Microsoft.SharePoint,?Version=12.0.0.0,?Culture=neutral,?PublicKeyToken=71e9bce111e9429c"?%>
<%@?Register?TagPrefix="SharePoint"?Assembly="Microsoft.SharePoint,?Version=12.0.0.0,?Culture=neutral,?PublicKeyToken=71e9bce111e9429c"
????Namespace="Microsoft.SharePoint.WebControls"?%>
<SharePoint:RenderingTemplate?ID="CodeArt_NoticeTemplate"?runat="server">
????<Template>
????????<table?width="100%"?border="0"?cellspacing="0"?cellpadding="0">
????????????<tr>
????????????????<td?class="FormToolBar">
????????????????????<SharePoint:InformationBar?ID="InformationBar1"?runat="server"?/>
????????????????????<SharePoint:FormToolBar?ID="FormToolBar1"?runat="server"?Visible="false"?/>
????????????????</td>
????????????</tr>
????????</table>
????????<table?width="95%"?border="0"?cellspacing="8"?cellpadding="0">
????????????<tr>
????????????????<td?align="center"?height="30px"?class="title">
????????????????????<b>
????????????????????????<SharePoint:FormField??ID="FormField1"?runat="server"?FieldName="Title"?/>
????????????????????</b>
????????????????</td>
????????????</tr>
????????????<tr>
????????????????<td?align="right">
????????????????????<SharePoint:CreatedModifiedInfo??ID="CreatedModifiedInfo1"?runat="server"?/>
????????????????</td>
????????????</tr>
????????????<tr>
????????????????<td?height="1"?align="center"?class="seprow">
????????????????</td>
????????????</tr>
????????????<tr>
????????????????<td?valign="top"?class="content">
????????????????????<SharePoint:FormField?ID="FormField2"?runat="server"?FieldName="Body"?/>
????????????????</td>
????????????</tr>
????????????<tr>
????????????????<td>
????????????????????<table?border="0"?cellspacing="0"?cellpadding="0">
????????????????????????<tr>
????????????????????????????<td>
???????????????????????????????? </td>
????????????????????????????<td>
????????????????????????????????<table?border="0"?cellspacing="0"?cellpadding="0">
????????????????????????????????????<SharePoint:FormComponent?ID="FormComponent1"?TemplateName="AttachmentRows"
????????????????????????????????????????runat="server"?/>
????????????????????????????????</table>
????????????????????????????????<SharePoint:AttachmentUpload?Visible="false"?ID="AttachmentUpload1"?runat="server"?/>
????????????????????????????</td>
????????????????????????</tr>
????????????????????</table>
????????????????</td>
????????????</tr>
????????????<tr>
????????????????<td>
????????????????</td>
????????????</tr>
????????????<tr>
????????????????<td?align="center">
????????????????????<table>
????????????????????????<tr>
????????????????????????????<td>
????????????????????????????????<SharePoint:GoBackButton?ID="GoBackButton2"?Visible="false"
????????????????????????????????????runat="server"?/>
????????????????????????????????<input?type="button"?value='?返?回?'?onclick="javascript:CloseWindow();return?false;"?/>
????????????????????????????????<!--img?src="/_wpresources/DisForm/b_close.gif"?οnclick="javascript:IsCloseWindow();return?false;"?width="122"?height="25"-->
????????????????????????????</td>
????????????????????????</tr>
????????????????????</table>
????????????????</td>
????????????</tr>
????????????<tr>
????????????????<td?align="center">
???????????????????? </td>
????????????</tr>
????????</table>
????????<script?language="javascript">
function?CloseWindow()
{
????if(?window.opener?!=?null?)?
????{
????????self.close();
????}
????else
????{
????????history.back(-1);
????}
}
????????</script>
????</Template>
</SharePoint:RenderingTemplate>
第三步:重啟IIS或應用程序池。
ok,你可以刷新頁面看效果了。
CodeArt_NoticeTemplate.ascx里面的內容重點關注以下標簽:
?<SharePoint:FormField?ID="FormField1"?runat="server"?FieldName="Title"?/> FormField是一個服務器控件,用它可以呈現一個字段的現實,編輯。FieldName來指定字段名,這個字段名一般是內部名(InternalName),InternalName
的獲取可以采用SharePoint Manager 2007 或Caml Builder之類的軟件或自己寫點代碼來獲取.
?<SharePoint:CreatedModifiedInfo ID="CreatedModifiedInfo1"?runat="server"?/> 這個很好理解,它顯示列表項目的創建修改信息.
?<SharePoint:AttachmentUpload?Visible="false"?ID="AttachmentUpload1"?runat="server"?/> 這個是用來傳附件的.既然我們改的是查看頁面,不需要上傳的功能,就把它隱藏掉了(Visible=false).
<table?border="0"?cellspacing="0"?cellpadding="0">
??????? <SharePoint:FormComponent ID="FormComponent1"?TemplateName="AttachmentRows"
????????????????????????????????????????runat="server"?/>
</table> 雖然上傳附件不需要,但是顯示已經上傳的附件還是需要的,這個就是來實現顯示附件的.
它實際并沒有什么內容.它的內容是有另外的模板AttachmentRows來實現的,查找DefaultTemplates.ascx可以找到這個模板:
<SharePoint:RenderingTemplate?ID="AttachmentRows"?runat="server">
????<Template>
????????<TR?id=idAttachmentsRow>
????????<TD?nowrap="true"?valign="top"?class="ms-formlabel"?width="20%">
????????<SharePoint:FieldLabel?FieldName="Attachments"?runat="server"/>
????????</TD>
????????<TD?valign="top"?class="ms-formbody"?width="80%">
????????????<SharePoint:AttachmentsField?FieldName="Attachments"?runat="server"/>
????????????<SCRIPT>
????????????var?elm?=?document.getElementById("idAttachmentsTable");
????????????if?(elm?==?null?||?elm.rows.length?==?0)
????????????????document.getElementById("idAttachmentsRow").style.display='none';
????????????</SCRIPT>
????????</TD></TR>
????</Template>
</SharePoint:RenderingTemplate>
??<SharePoint:GoBackButton ID="GoBackButton2"?Visible="false"????????????????????????????????????runat="server"?/> 這個用來返回列表頁面.我們自己的按鈕代替了它,所有也把它Visible掉了.
以上的模板不但可以用在查看頁面,其他頁面也是可以 通用的.如果要用到保存頁面,需要在模板里加一個保存控件:
<SharePoint:SaveButton?runat="server"/>
修改保存頁面,(NewForm.aspx或EditForm.aspx)的ListFormWebPart的TemplateName為CodeArt_NoticeTemplate.
可以看一下效果:
完全采用SPD定制表單頁面
采用RenderingTemplate定制的模板可以在多個表單頁面復用,如果拋棄復用性,完全可以全部用SPD實現.
第一步--隱藏掉原有的顯示區域:
設置主要webpart區域visible屬性為false.<WebPartPages:WebPartZone?Visible="false"?runat="server"?FrameType="None"?ID="Main"
第二步--直接在Content控件中寫模板:
<asp:Content?ContentPlaceHolderId="PlaceHolderMain"?runat="server">
<SharePoint:FormField??ID="FormField1"?runat="server"?FieldName="Title"?/>
<hr/>
<SharePoint:FormField?ID="FormField2"?runat="server"?FieldName="Body"?/>
<br/>
?<SharePoint:SaveButton?runat="server"?ID="save"?/>
?<SharePoint:GoBackButton?ID="GoBackButton2"????????????????????????????????????runat="server"?/>
</asp:Content>
ok,結束.
有的人可能要問了:這樣定制是不錯,但是會喪失很多wss的功能,比如列表可以動態增加字段,這些動態的字段怎么顯示出來呢?
這就要用到ListFieldIterator這個控件了,只要把以下代碼嵌入你的模板即可:
<SharePoint:ListFieldIterator?runat="server"/>
要實現完美的定制表單頁面,大家最好去研究一下DefaultTemplates.ascx的內容.并要著重研究ListForm模板,所有的List的表單默認都是基于這個模板的.
ListForm
<SharePoint:RenderingTemplate?ID="ListForm"?runat="server">
????<Template>
????????<SPAN?id='part1'>
????????????<SharePoint:InformationBar?runat="server"/>
????????????<wssuc:ToolBar?CssClass="ms-formtoolbar"?id="toolBarTbltop"?RightButtonSeparator=" "?runat="server">
????????????????????<Template_RightButtons>
????????????????????????<SharePoint:NextPageButton?runat="server"/>
????????????????????????<SharePoint:SaveButton?runat="server"/>
????????????????????????<SharePoint:GoBackButton?runat="server"/>
????????????????????</Template_RightButtons>
????????????</wssuc:ToolBar>
????????????<SharePoint:FormToolBar?runat="server"/>
????????????<TABLE?class="ms-formtable"?style="margin-top:?8px;"?border=0?cellpadding=0?cellspacing=0?width=100%>
????????????<SharePoint:ChangeContentType?runat="server"/>
????????????<SharePoint:FolderFormFields?runat="server"/>
????????????<SharePoint:ListFieldIterator?runat="server"/>
????????????<SharePoint:ApprovalStatus?runat="server"/>
????????????<SharePoint:FormComponent?TemplateName="AttachmentRows"?runat="server"/>
????????????</TABLE>
????????????<table?cellpadding=0?cellspacing=0?width=100%><tr><td?class="ms-formline"><IMG?SRC="/_layouts/images/blank.gif"?width=1?height=1?alt=""></td></tr></table>
????????????<TABLE?cellpadding=0?cellspacing=0?width=100%?style="padding-top:?7px"><tr><td?width=100%>
????????????<SharePoint:ItemHiddenVersion?runat="server"/>
????????????<SharePoint:ParentInformationField?runat="server"/>
????????????<SharePoint:InitContentType?runat="server"/>
????????????<wssuc:ToolBar?CssClass="ms-formtoolbar"?id="toolBarTbl"?RightButtonSeparator=" "?runat="server">
????????????????????<Template_Buttons>
????????????????????????<SharePoint:CreatedModifiedInfo?runat="server"/>
????????????????????</Template_Buttons>
????????????????????<Template_RightButtons>
????????????????????????<SharePoint:SaveButton?runat="server"/>
????????????????????????<SharePoint:GoBackButton?runat="server"/>
????????????????????</Template_RightButtons>
????????????</wssuc:ToolBar>
????????????</td></tr></TABLE>
????????</SPAN>
????????<SharePoint:AttachmentUpload?runat="server"/>
????</Template>
</SharePoint:RenderingTemplate>
轉載于:https://www.cnblogs.com/jianyi0115/archive/2008/03/10/1099639.html
總結
以上是生活随笔為你收集整理的WSS页面定制系列(2)---定制单个列表的表单页面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在 ASP.NET 2.0 中上载文件
- 下一篇: ASCII码对照表(不可见字符)