WalkThrough SharePoint WebPart 入门指南 二 blog.joycode.com Kaneboy [MS MVP] 转载声明:此WalkThrough系列被转载和引用时,请保持博客堂链接。 修改WalkThrough中的任何内容都需要经过许可。Thanks.
此WalkThrough将演示 创建一个显示指定文档库最新的文件列表的WebPart 在WebPart定义可在浏览时让用户自行调整的属性 在WebPart中访问SharePoint Object Model
背景知识 请通过前一辑《WalkThrough – SharePoint WebPart 入门指南》了解在VS.NET中创建WebPart的基础知识,此WalkThrough将不再对细节详细说明
一、在VS.NET中创建一个WebPart项目 在VS.NET中创建一个“Web Part Library”项目,将项目改名为“SampleWebPart”,VS.NET会自动创建一个名称为“WebPart1”的WebPart组件(并位于名称空间“SampleWebPart”之下)。
二、创建属性 “ListName” 1、定义一个变量: private String _sListName = "共享文档"; 2、定义一个对应的属性: [Browsable(true), Category("设置"), DefaultValue(""), WebPartStorage(Storage.Personal), FriendlyName("文档库名称"), Description("要显示的文档库的名称")] public String ListName { get { return _sListName; } set { _sListName = value; } } 修饰属性的Attribute的解释 Browsable 此属性是否在(页面中的)属性Panel中显示出来 Category 属性的类别 DefaultValue 属性的(此WebPart的所有页面实例的)默认值 WebPartStorage 枚举,Storage.Shared表示所有用户共享一个值,Storage.Personal为每个用户保存单独的值,Storage.None不保存 FriendlyName 显示在属性Panel中的名称 Description 显示在属性Panel中的提示
三、创建属性 “DisplayCount” 1、定义一个变量: private UInt32 _iDisplayCount = 10; 2、定义一个对应的属性: [Browsable(true), Category("设置"), DefaultValue(10), WebPartStorage(Storage.Personal), FriendlyName("显示文件数量"), Description("可显示的文件的最大数量")] public UInt32 DisplayCount { get { return _iDisplayCount; } set { _iDisplayCount = value; } }
四、创建访问指定文档库中文件的Method private String GetListFiles() { String result = ""; if ((this.ListName != null) && (this.ListName.Length > 0)) SPQuery query = new SPQuery(); query.Query = "<OrderBy><FieldRef Name=\"修改时间\" Ascending=\"FALSE\" /></OrderBy>"; query.RowLimit = this.DisplayCount; SPList list = SPControl.GetContextWeb(this.Context).Lists[this.ListName]; foreach(SPListItem item in list.GetItems(query)) if (item.File != null) result += "<li><a href='" + item.File.Url + "'>" + item.File.Name + "(" + item.File.Author.Name + ")" + "</a><br>"; } return result;
五、通过RenderWebPart()输出内容 在重载的RenderWebPart()方法中通过调用第四步创建的GetListFiles()所返回的String来输出内容。 protected override void RenderWebPart(HtmlTextWriter output) { output.Write(this.GetListFiles()); }
六、将WebPart部署到服务器上 1、配置WebPart(通过修改.dwp文件); 2、使SPS服务器信任WebPart(在SPS虚拟站点的web.config文件中增加<SafeControl>段); 3、将VS.NET编译出的.dll文件拷贝到SPS虚拟站点根目录的“bin”目录中; 4、在WebPart页面上导入WebPart。 以上步骤可以参看前一辑的WalkThrough来获取更详细信息。
七、修改SPS站点的信任等级 打开SPS虚拟站点的根目录下的web.config文件,找到下面这行: <trust level="WSS_Minimal" originUrl="" /> 将其修改为: <trust level="WSS_Medium" originUrl="" /> 提示: WebPart在默认的安全等级下是无法访问SharePoint Object Model的(即无法通过WSS SDK来访问SPS站点中的列表、文档库、文档、用户等信息),为了让我们的WebPart能正常工作,我们可以: ★ 为这个WebPart创建一个单独的Policy文件 ★ 将WebPart的(.dll)文件加上StrongName后放入GAC中 ★ 提升整个SPS虚拟站点的信任等级 上面采用的是第三种方法,将默认的信任等级从WSS_Minimal提升到WSS_Medium(最高等级为Full)。
八、在页面上直接修改WebPart属性 1、我们已经可以看到导入到页面的WebPart所呈现出的效果。它按照修改时间倒序排序,列出了指定文档库中的文档。 2、点击WebPart右上角的向下箭头,并选择菜单中的“修改我的Web部件”。
八、在页面上直接修改WebPart属性 (二) 3、在出现的属性Panel中,我们可以看到我们在第二步和第三步中创建的两个属性。用户可以通过这里直接修改这些自定义属性,并影响WebPart的效果。我们将“显示文件数量”的值修改为5(也就是在第三步中定义的WebPart的DisplayCount属性)。 4、点击“确定”按钮后,页面上的WebPart将如我们所想的那样,只显示最近修改的5个文档。
九、 To Be Continue… 在以后的WalkThrough中,将陆续包含下面的内容: 在WebPart中包含用Code-Behind方式写的User Control; 用(.cab)方式和Wppackager来部署WebPart; 在VS.NET中调试WebPart; 为文档库编写事件处理器…