Moss学习笔记(1)

前言: 笔记?说真的,真的是第一次写,不知道能不能写好,能不能让别人看明白写的什么。因为从幼儿园起就没有记过笔记,不是我懒,而是一种习惯。

     闲言少叙,下面先看我学自定义字段的一个过程吧。一、自定义字段实现的功能:添加一个地区信息的自定义字段,让用户可以填写国家、省、城市的名称(如果读者有兴趣,可以改成下拉菜单式的).

1、创建项目首先打开VS2005,然后点击工具条上的文件->新建->项目,弹出新建项目面板,在面板左侧选择项目类型下的sharepoint(如果没安装sharepoint先安装下),然后再面板右侧选择Empty,然后给项目起个名称,如CustomStudy,再选个项目存放的位置,如下图:                 点击确定,VS会为我们创建一个空的项目。如图:         2、下面我们要添加类文件    本来MS已经为我们创建好了创建自定义字段的类模板,可是我创建了好多次,都部署不成功,所以没办法,只能放弃他提供的类模板,自己创建空的类(其实用MS提供的模板应该是没问题的,可是我一直没找到方法,所以暂时放弃了)。      在新添加一个类之前,我们要先添加个引用,就是Microsoft.SharePoint.dll,这个文件在C:/Program Files/Common Files/Microsoft Shared/web server extensions/12/ISAPI下。具体步骤是:在解决方案资源管理器里,右键点击项目名称,然后在弹出的菜单里选择添加引用,如图:     切换到浏览标签,把查找范围定位到:C:/Program Files/Common Files/Microsoft Shared/web server extensions/12/ISAPI,如图:   选择Microsoft.SharePoint.dll,然后确定,这样引用就添加完成。右键点击项目名称,为项目添加我们的第一个类文件,如图,我们选择C#项目下的类:   给类起个名称,如CustomStudy,点击确定,VS为我们自动添加了相应的引用和代码,如图:     下面我们来修改我们刚添加的这个类的代码:首先添加: 注意这要和自己建的类名相同哦!using Microsoft.SharePoint; using Microsoft.SharePoint.WebControls; 再让该类继承 SPFieldMultiColumn 把下面代码添加到类内: #region 构造函数         public CustomStudy (SPFieldCollection fields, string fieldName)             : base(fields, fieldName)         { }         public CustomStudy (SPFieldCollection fields, string typeName, string displayName)             : base(fields, typeName, displayName)         { }         #endregion         public override object GetFieldValue(string value)         {             if (string.IsNullOrEmpty(value))                 return null; 注意:这两个要和你下面建的两个类的名称要相同            return new CustomStudyValue(value);         }         public override BaseFieldControl FieldRenderingControl         {             get             {                 BaseFieldControl fldControl = new CustomStudyControl();                 fldControl.FieldName = InternalName;                 return fldControl;             }    } 到这里,我们的第一个类文件就大功告成了。其实,如果用MS提供的模板,这些代码是自动生成的。这里就不提了,读者可以自己用MS的模板建个看下。用同样的方法,再为项目添加两个类文件:CustomStudyControl.cs和CustomeStudyValue.cs。在这之前,要添加System.Web的引用,不要告诉我你不知道怎么添加的哦…^o^。 CustomStudyControl.cs的完整代码: using System; using System.Collections.Generic; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls;   using Microsoft.SharePoint; using Microsoft.SharePoint.WebControls;   namespace CustomStudy {     class CustomStudyControl : BaseFieldControl     {         private TextBox txtCountry;         private TextBox txtProvince;         private TextBox txtCity;           protected override string DefaultTemplateName         { 注意下这个,等会我们要用            get             {                 return "testcustom";             }         }           public override void Focus()         {             //base.Focus();             EnsureChildControls();             txtCountry.Focus();         }           public override object Value         {             get             {                 //return base.Value;                 this.EnsureChildControls();                 CustomStudyValuefieldValue = new CustomStudyValue ();                 fieldValue.Country = txtCountry.Text.ToString();                 fieldValue.Province = txtProvince.Text.ToString();                 fieldValue.City = txtCity.Text.ToString();                 return fieldValue;             }             set             {                 EnsureChildControls();                 CustomStudyValuefieldValue = (CustomStudyValue)value;                 txtCountry.Text = fieldValue.Country;                 txtProvince.Text = fieldValue.Province;                 txtCity.Text = fieldValue.City;             }         }           protected override void CreateChildControls()         {             if (Field == null)                 return;             base.CreateChildControls();             if (ControlMode == Microsoft.SharePoint.WebControls.SPControlMode.Display)                 return;             txtCountry = (TextBox)TemplateContainer.FindControl("txtCountry");             txtProvince = (TextBox)TemplateContainer.FindControl("txtProvince");             txtCity = (TextBox)TemplateContainer.FindControl("txtCity");             if (txtCountry == null)                 throw new ArgumentException("控件加载失败!");             if (txtProvince == null)                 throw new ArgumentException("控件加载失败!");             if (txtCity == null)                 throw new ArgumentException("控件加载失败!");             txtCountry.TabIndex = TabIndex;             txtCountry.CssClass = CssClass;             txtCountry.ToolTip = Field.Title + "国家";               txtProvince.TabIndex = TabIndex;             txtProvince.CssClass = CssClass;             txtProvince.ToolTip = Field.Title + "省";               txtCity.TabIndex = TabIndex;             txtCity.CssClass = CssClass;             txtCity.ToolTip = Field.Title + "城市";         }     } } CustomeStudyValue.cs的完整代码: using System; using System.Collections.Generic; using System.Text;   using Microsoft.SharePoint;   namespace CustomStudy {     class CustomStudyValue : SPFieldMultiColumnValue     {         private const int numberOfFields = 3;           public CustomStudyValue() : base(numberOfFields) { }         public CustomStudyValue(string value)             : base(value)         { }           public string Country         {             get             {                 return this[0];             }             set             {                 this[0] = value;             }         }           public string Province         {             get             {                 return this[1];             }             set             {                 this[1] = value;             }         }         public string City         {             get             {                 return this[2];             }             set             {                 this[2] = value;             }         }     } } 看了这些很有诱惑力的代码,你是不是有了跃跃欲试的冲动?那就一起来吧,跟着我的步骤,让我们一起把这个自定义字段做出来。(强烈建议不要直接使用源代码,虽然说我会把源代码提供出来)上面好象漏掉了什么,对,还没有给项目添加强命名。这个很简单:右键点击项目,选择“属性”选项,就打开了项目属性面板,切换到“签名”面板,勾上“为程序集签名(A)”,如图:   在“选择强名称密钥文件(K)”下的下拉菜单,选择“新建”,弹出“创建强名称密钥”面板,输入一个名称,如:key,并把“使用密码保护密钥文件(P)”前面的勾去掉,如图:     点击确定,然后保存,关闭属性面板,这样我们就为项目添加了强命名。如图:     3、添加.ascx文件和XML文件右键点击项目名称,依次选择:添加-〉新建项,打开添加新项面板,选择“文本文件”,并把名称命名为:CustomStudy.ascx(你也可以命名为其他名称),如图:   点击添加按钮,即可添加一个ascx文件,在此文件的源代码视图里添加如下代码:   <%@ Control Language="C#" Debug="true" %> <%@ 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" %> 这个和我上面提到的那个testcustom一定要相同<SharePoint:RenderingTemplate ID="testcustom" runat="server">     <Template>         <div>             <div class="" style="width: 100%;">                 国家:<asp:TextBox ID="txtCountry" runat="server" Width="90%" MaxLength="100"></asp:TextBox>             </div>             <div class="" style="width: 100%;">                 省:<asp:TextBox ID="txtProvince" runat="server" Width="90%" MaxLength="100"></asp:TextBox>             </div>             <div class="" style="width: 100%;">                 城市:<asp:TextBox ID="txtCity" runat="server" MaxLength="50"></asp:TextBox>             </div>         </div>     </Template> </SharePoint:RenderingTemplate>     下面我们添加XML文件,注意:此文件一定要以fldtypes_开头,和添加ascx文件一样,打开添加新项面板,这次选择添加XML文件,命名为fldtypes_CustomStudy.xml,并添加如下代码: <?xml version="1.0" encoding="utf-8" ?> <FieldTypes>      <FieldType>          <Field Name="TypeName">地区信息</Field>          <Field Name="ParentType">MultiColumn</Field>          <Field Name="TypeDisplayName">地区信息</Field>          <Field Name="TypeShortDescription">地区信息(含国家、省、城市)</Field>          <Field Name="UserCreatable">TRUE</Field>          <Field Name="ShowOnListAuthoringPages">TRUE</Field>          <Field Name="ShowOnDocumentLibraryAuthoringPages">TRUE</Field>          <Field Name="ShowOnSurveyAuthoringPages">TRUE</Field>          <Field Name="ShowOnColumnTemplateAuthoringPages">TRUE</Field>          <Field Name="FieldTypeClass">CustomStudy.CustomStudy,CustomStudy, Version=0.0.0.0, Culture=neutral, PublicKeyToken=37319c032972f834</Field>          <PropertySchema>               <Fields>                    <Field Name="Country" DisplayName="国家" DisplaySize="30" Type="Text">                        <Default></Default>                    </Field>                    <Field Name="Province" DisplayName="省" DisplaySize="30" Type="Text">                        <Default></Default>                    </Field>                    <Field Name="City" DisplayName="城市" DisplaySize="30" Type="Text"></Field>               </Fields>          </PropertySchema>          <RenderPattern Name="DisplayPattern">               <Default>                    <Column SubColumnNumber="0" HTMLEncode="TRUE" />                    <HTML><![CDATA[<BR>]]></HTML>                    <Column SubColumnNumber="1" HTMLEncode="TRUE" />                    <HTML><![CDATA[<BR>]]></HTML>                    <Column SubColumnNumber="2" HTMLEncode="TRUE" />                    <HTML><![CDATA[<BR>]]></HTML>               </Default>          </RenderPattern>      </FieldType> </FieldTypes> CustomStudy.CustomStudy,CustomStudy, Version=0.0.0.0, Culture=neutral, PublicKeyToken=37319c032972f834 这段代码,要用Reflector反编译出来,如果没有Reflector,就自己想办法找个。其中,CustomStudy.CustomStudy,前一个CustomStudy是命名空间,后一个CustomStudy是你编译生成的dll文件的名称,CustomStudy, Version=0.0.0.0,这个CustomStudy是你编译生成的dll文件名称。 <PropertySchema>节是控制字段的显示,<RenderPattern Name="DisplayPattern">节是控制字段的样式的。到这里,我们的编码工作基本完成,接下来我们要部署我们的自定义字段了。 4、自定义字段的部署 A. 把我们的编译生成的dll文件拖到C:/WINDOWS/assembly文件夹下,直接用鼠标拖放就可。 B.Copy UI用户控件(ascx文件)到C:/Program Files/Common Files/Microsoft Shared/web server extensions/12/TEMPLATE/CONTROLTEMPLATES文件夹下 C.Copy类型定义文件(fldtypes_CustomStudy.xml)到:C:/Program Files/Common Files/Microsoft Shared/web server extensions/12/TEMPLATE/XML文件夹下。 D.重起IIS,开始-〉运行里,直接输入iisreset 部署完之后,在创建栏的时候,就会看到我们开发的自定义字段类型了。好,到此,自定义字段的学习算略知皮毛,如有错误欢迎大家指正,不胜感激!下面我们就开始webpart的学习。  

www.moteshow.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值