MOSS2007开发之旅——WebParts
在开始WebParts开发之前,我们先了解一下MOSS的一些开发工具,然后再开始从简单到复杂的WebParts。
先插句对MOSS部分功能的认识。我目前接触的MOSS内容就像是一个建站系统,功能比普通的CMS要强大,它可以进行工作流。你创建的网站等所有信息也都是保存在DB中,它的对象模型都是以SP开头,如SPSite、SPWeb、SPList、SPListItem、SPField等,Site有Web集合,Web有List集合,List有Item集合和Field集合。安装MOSS后,所有的页面、模板、WebPart、程序集等都在C:\Program Files\Common Files\Microsoft Shared\web server extensions\12这个12文件夹中,你在IIS的虚拟目录中是看不到页面文件的。运行SP程序的是w3wp.exe这个进程而不是运行aspnet_ap.exe。
开发工具
使用这些工具,会使你在以后的MOSS开发中非常顺手。
1. Visual Studio extensions for Windows SharePoint Services
Visual Studio extensions for Windows SharePoint Services(点击链接可以下载)是开发自定义SP程序的工具。安装后会集成在VS2008中(VS2010 Beta2已经集成),它提供了工程模板、项目模板和SP方案建造器,这些模板会自动生成bat文件、Feature.xml和Manifest.xml文件,右键点击工程选择deploy命令就会自动部署程序。通过View菜单其他工具可以找到WSP视图,WSP Builder和STSDEV工具可以帮助你维护Feature.xml和Manifest.xml文件,部署是会产生Web solution package (WSP),只要将这个包发给用户,让他自己在服务器上运行即可以轻松部署你开发的功能。
1> 工程模板:
- Web Part
- Team Site Definition
- Blank Site Definition
- List Definition TDGSF
- Empty SharePoint Project
2> 项目模板:
- Web Part
- Custom Field
- List Definition (with optional Event Receiver)
- Content Type (with optional Event Receiver)
- Module
- List Instance
- List Event Handler
- Template
3> SP方案建造器:
大家可以用它产生一个站点。更多关于使用的信息可以下载用户向导Visual Studio extensions Windows SharePoint Services User Guide.
2. CAML Query Tools
Collaborative Application Markup Language (CAML) 其实就是为查询SPList数据的XML标记语言。下面是生成CAML的工具:
更多关于CAML的信息, 请看MSDNCollaborative Application Markup Language Core Schemas。
3. SharePoint Designer
可以设计工作流,编辑模板等,更多信息请看Microsoft Office SharePoint Designer。
4. 更多链接
- Automating Solution Package Creation for Windows SharePoint Services by Using MSBuild
- Microsoft Office SharePoint Developer Center
- Microsoft SharePoint Team Blog
- SharePoint Solution Installer
- Team-Based Development in Microsoft Office SharePoint Server 2007
- Using Visual Studio 2005, MakeCab.exe and MSBuild to Create Window SharePoint Services v3 Solution Files (*.WSPs)
- Web Application Automation Tool (WatiN)
- Windows SharePoint Services
- Windows SharePoint Services Developer Center
- Windows SharePoint Services 3.0 SP1 Developer Evaluation VPC
WebPart
关于WebPart的部署,大家可以看高维鹏(Brian)的SharePoint 2007图文开发教程(3)---实现简单的WebPart,这里我只讲代码。
1. Hello WebPart
新建一个WebPart模板类库,添加一个WebPart项目,Hello类继承System.Web.UI.WebControls.WebParts.WebPart。功能是在页面中输出"Hello WebPart World!”。注意,其中AssemblyInfo.cs后面一定要有 [assembly: System.Security.AllowPartiallyTrustedCallers()] 这一句,否则WebPart将无法使用。
public class Hello : WebPart { string text = "Hello WebPart World!"; [WebBrowsable(true), Personalizable(true)] public string Text { get { return text; } set { text = value; } } protected override void Render(System.Web.UI.HtmlTextWriter writer) { writer.Write(text); } }
2. 高级WebPart
这个WebPart我们将要表演如下节目:
- 在WebPart中显示站点“Test”列表中的“Name”字段
- 单击每个项目将该内容显示在上面创建的Hello部件中
这是一个带事件的WebPart,同时将数据传送到页面另外一个WebPart中显示,继承WebPart控件的同时还要实现IPostBackEventHandler接口。
public class List : WebPart, IPostBackEventHandler { private List<string> nameList = new List<string>(); private HtmlTableCell tableCell = new HtmlTableCell(); public List() { using (SPWeb web = SPContext.Current.Web) { SPList testList = web.Lists["Test"]; //"Test"为Test列表的名称 foreach (SPListItem item in testList.Items) { Guid nameId = item.Fields["Name"].Id; //"Name"为Name字段的显示名称 nameList.Add(item[nameId].ToString()); } } } protected override void CreateChildControls() { this.Controls.Add(new LiteralControl("<table><tr>")); this.Controls.Add(tableCell); this.Controls.Add(new LiteralControl("</tr></table>")); if (!Page.IsPostBack) { AddNameItems(); } } protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (Page.IsPostBack) { AddNameItems(); } } private void AddNameItems() { string html = "<ul>"; foreach (string name in nameList) { html += string.Format( "<li style=\"cursor:pointer\" onclick=\"{0}\">{1}</li>", Page.ClientScript.GetPostBackEventReference(this, name), name); } html += "</ul>"; tableCell.Controls.Add(new LiteralControl(html)); } #region IPostBackEventHandler Members public void RaisePostBackEvent(string eventArgument) { for (int i = 0; i < WebPartManager.WebParts.Count; i++) { if (WebPartManager.WebParts[i].Title == "Hello") { Hello hello = (Hello)WebPartManager.WebParts[i]; hello.Text = eventArgument; } } } #endregion }
关于WebPart的更多内容,如AJAX Web Parts,请参考Inside Microsoft Windows SharePoint Services 3.0
Known 是基于 Blazor 轻量级、跨平台、低代码、易扩展的插件开发框架。
源码:https://gitee.com/known/Known
源码:https://github.com/known/Known
如果对您有帮助,点击⭐Star⭐关注 ,感谢支持开源!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2008-10-30 微软提供正确卸载IE7的方法并恢复IE6!!!!