• 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

    第三步:重启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






  • 相关阅读:
    Entity Framework4.0 (一)概述(EF4 的Database First方法)
    开园第一篇,Hello cnBlog
    汇编学习笔记32
    汇编学习笔记25
    汇编学习笔记33
    汇编学习笔记28
    汇编学习笔记29,30
    汇编学习笔记23
    汇编学习笔记27
    汇编学习笔记31
  • 原文地址:https://www.cnblogs.com/jianyi0115/p/1099639.html
Copyright © 2020-2023  润新知