日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WSS页面定制系列(2)---定制单个列表的表单页面

發布時間:2025/7/14 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 定制表單頁面

第一步--修改表單頁面默認模板:

用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>
????????????????????????????????
&nbsp;&nbsp;</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">
????????????????????
&nbsp;</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="&nbsp;"?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="&nbsp;"?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)---定制单个列表的表单页面的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。