重写的sharepoint webcontrol

Sharepoint中可以重写的web control 很多,有ListFieldIteratorListViewSelectorLookupFieldSPGridViewListViewFormFieldAppendOnlyHistory等等(在Microsoft.Sharepoint.WebControls命名空间下)

1.      重写sharepoint webcontrol对应的类,实现我们自己的逻辑

2.      编写一个UserControl ascx

3.      WSS很多系统控件都采用了模板 ,大家 reflect一下 Microsoft.SharePoint.dll 一些类的代码,就可以发现这一点 ,如ListFormWebPart,有个TemplateName的属性。系统模板默认存放在
C:/Program Files/Common Files/Microsoft Shared/web server extensions/12/TEMPLATE/CONTROLTEMPLATES
目录中的
DefaultTemplates.ascx
,这是 一个用户控件 ,里面放了很多的模板控件(RenderingTemplate)。 表单页面的呈现是通过ListFormWebPart,这个webpart的采用的模板是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>

WSS开发中,不推荐去修改系统默认的文件,那样的话在系统升级的过程中我们的定制化可能会被"覆盖".一般情况下都是在原有站点的基础上进行扩展以完成我们要达到的自定义的效果。

WSS本身支持RenderingTemplate的定制.只要在CONTROLTEMPLATES下新建一个ascx文件,在里面添加模板即可,新添加的模板会覆盖默认模板中同样ID定义的模板.假设我们要在表单页面上添加几条横线: <hr>,可以这样做:

1)CONTROLTEMPLATES下新建一个文本文件,改名为TestTemplates.ascx

2)用记事本打开TestTemplates.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"%>

<%@Register TagPrefix="SPHttpUtility" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" namespace="Microsoft.SharePoint.Utilities"%>

<%@ Register TagPrefix="wssuc" TagName="ToolBar" src="~/_controltemplates/ToolBar.ascx" %>

<%@ Register TagPrefix="wssuc" TagName="ToolBarButton" src="~/_controltemplates/ToolBarButton.ascx" %>

3)接着从DefaultTemplates.ascx复制IDListFormRenderingTemplate,粘贴到TestTemplates.ascx,并添加<hr>:

<SharePoint:RenderingTemplate ID="ListForm" runat="server">

    <Template>

        <SPAN id='part1'> 

<hr>

<hr>

<hr>

            <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"/>

<hr>

    </Template>

</SharePoint:RenderingTemplate>

4)重启IIS,刷新页面即可(C:/Program Files/Common Files/Microsoft Shared/web server extensions/12/TEMPLATE/CONTROLTEMPLATES目录下的文件都会被编译的,所以只有重启IIS才能重新加载控件)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值