JOJ
踏踏实实做人,认认真真做事!放纵自己就是毁灭自己!

Moss2007默认有许多常见类型,如:文本,日期,数字,选项… ,有时我们需要根据需求自定义一个类型!在WSS3.0中可以通过C#或者VB来编写扩展字段,所有的自动需要继承内置的Sharepoint类型(如:SPFieldText 和 SPFieldNumber)

字段类型构成

    • 字段类型
    • 字段值类(不必需)
    • 字段展现部分(用户控件或者直接输出)
    • 字段描述文件(必须以fldtypes_开头的文件)

Demo:

打开VS2008, 新建Sharepoint类型的“Empty"工程 "CustomFieldsDemo",添加-->新项,选择 Field Control 类型,命名为: "ddlTree " , 字段描述的XML文件也自动生成了!

1

打开: ddlTree.Field.cs  ,把继承修改为 "SPFieldChoice";

打开: ddlTree.FieldControl.cs , 把继承修改为 "BaseFieldControl"; 按你字段的需求写逻辑代码!

ddlTree.FieldControl.cs

 

 

新建一个字段类型的呈现控件(这里新建一个用户控件)

<%@ Control Language="C#" Debug="true" %>

<%@ Assembly Name="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 

<SharePoint:RenderingTemplate ID="ddlTreeFieldRendering" runat="server">
    <Template>
        <asp:DropDownList ID="ddlTree" runat="server"></asp:DropDownList>
    </Template>
</SharePoint:RenderingTemplate>
 
文件保存为:ddlTreeFieldRendering.ascx , 这个文件名和 RenderingTemplate 控件的ID 名 和 DefaultTemplateName属性值一致!

 

fldtypes_ddlTree.xml 里面的内容

fldtypes_ddlTree.xml

 

打开你的站点,新建一个List 名为 "Tree " 效果如下, 因为上面代码需要获取Tree里面的数据,字段也要一样哦

飞信截屏未命名

 

部署,使用:

  1. 把 "ddlTreeFieldRendering.ascx"文件复制到  "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\12\TEMPLATE\CONTROLTEMPLATES" ;
  2. 把 fldtypes_ddlTree.xml  文件复制到 C:\Program Files\Common Files\microsoft shared\Web Server Extensions\12\TEMPLATE\XML
  3. 把 工程的程序集 注册到 GAC 并重启IIS! 可使用vs Tools里面的  gacutil -if d:dll.dll  注册到GAC , iisreset 重启IIS

最后效果图:

飞信截屏未命名

 

参考书籍: SharePoint Server 2007 案例开发实战 杨永刚 著

 

posted on 2010-12-03 11:30  JoinJ  阅读(956)  评论(2编辑  收藏  举报