转:http://blog.csdn.net/bestbadgod/article/details/6895542

Sharepoint系列的博客,都是我个人自学过程中的点滴的积累,毕竟没做过C#及Asp.net方面的开发,如有不正确的地方,还望大牛们斧正。

Sharepoint2010较Sharepoint2007,功能上有了很大的改善,无论在WebPart开发、自定义字段、事件的编写,等等等等,都进行了操作上得简化,使整个项目的建立、部署及调试,都变得极为的简单。

下面,就让我们开始Sharepoint2010中,WebPart开发的旅程吧。

1:事先的准备工作

首先,让我们创建网站集“http://moss:8000”,并在主页上创建员工信息列表,列表名称为“员工列表”,暂且让我们定义四个字段,分别为“员工编号”、“员工姓名”、“出生日期”和“家庭住址”。并添加两条记录,如下图所示:

那么,本节咱们的工作目的,便是把该列表中的数据,全部(或部分),通过GridView展示到主页面上,让用户在登录系统后,就能非常清楚的看到他所关心的、或感兴趣的数据或内容。比如上面所说的员工的信息等。


2:创建WebPart

1) 打开VS2010,在新建项目界面,选择Visual C# →SharePoint→2010,点击右部的“可视Web部件”,并给项目起名“MyFirstWebPart”如下图所示:





注:由于SharePoint2010是基于.NET Framework3.5的,所以,在进行Sharepoint2010的开发时,无论是WebPart、EventReceiver、还是自定义字段、控制台应用程序,都要选择.NET Framework3.5,而不是4.0,否则将无法引用Microsoft.Sharepoint命名空间(引用的Sharepoint.Dll无效)。

2)点击确定按钮后,将出现如下图所示对话框:

在站点地址验证栏中输入你要部署(或调试)的站点地址,并点击验证按钮。在验证Moss地址无误后,点击完成按钮。



3)编写WebPart代码。首先,在完成上一步工作以后,就进入了编程页面。在页面上添加GridView控件,并修改其属性。如下图所示:


由于列表中有4个字段,如果想全部显示到主也上的话,那么,咱们通过GridView的编辑列的功能,绑定4个字段,并分别设置HeaderText的值为“员工编号”,“员工姓名”,“家庭地址”和“出生年月”。设置DataField值为“Title”,“_x5458__x5de5__x59d3__x540d_”,“_x5bb6__x5ead__x4f4f__x5740_”和“_x51fa__x751f__x65e5__x671f_” 



==========================我是华丽的分界线========================================

写到这里,咱们不妨暂停一下,来看看“Title”,以及后面的“_x5458__x5de5__x59d3__x540d_”,“_x5bb6__x5ead__x4f4f__x5740_”和“_x51fa__x751f__x65e5__x671f_” 到底是何方神圣!首先,咱们在列表中定义了四个字段,分别为员工编号、员工姓名、家庭住址和出生年月,其中的员工编号字段,我是直接修改了列表自带的“标题”字段,所以,该字段名在数据库中显示为Title。而如果你用中文名来作为栏的名字时,Sharepoint会把中文名转换为xoooo的格式,其中oooo为对应的数字。那么咱们来看下如何获取中文字段名在数据库中对应的名字吧。

建立控制台应用程序,正如上面的注意点一样,记得选择.NET Framework3.5,而不是4.0   接下来,引用SharePoint.dll,路径为C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.dll ,并引用其命名空间 
using Microsoft.SharePoint;  然后编写代码如下:

  1. static void Main(string[] args)
  2. {
  3. using (SPSite site = new SPSite("http://moss:8000"))     //http://moss:8000为你自己对应的网站集名称
  4. {
  5. using (SPWeb web = site.OpenWeb(""))                //如果你的网站不是在网站集下,需要site.OpenWeb("WebUrl")  WebUrl 为网站的Url
  6. {
  7. SPList list = web.Lists["员工列表"];
  8. foreach (SPField  field in list.Items.Fields )
  9. {
  10. Console.WriteLine("字段名:" +field.Title + "         InternalName:" + field.InternalName );
  11. }
  12. }
  13. }
  14. }
static void Main(string[] args)
{
using (SPSite site = new SPSite("http://moss:8000")) //http://moss:8000为你自己对应的网站集名称
{
using (SPWeb web = site.OpenWeb("")) //如果你的网站不是在网站集下,需要site.OpenWeb("WebUrl") WebUrl 为网站的Url
{
SPList list = web.Lists["员工列表"];
foreach (SPField field in list.Items.Fields )
{
Console.WriteLine("字段名:" +field.Title + " InternalName:" + field.InternalName );
}
}
}
}

运行控制台应用程序,得到如下结果:

简单的说:在列表中所定义的字段名称(如果为汉字的话),其实相当于你的小名,而这个小名,是不能写到身份证中,他需要转换成Sharepoint能认识的名字(也就是你真正的名字)。通过上面代码的演示,你可以很容易的得到那一长串怪东西究竟是什么玩意儿了。



友情提示:如果你在执行控制台应用程序的时候,反复的,而且不知道什么原因的得到如下的错误提示的话:



别害怕,选择解决方案下的类库→右键→属性,在【生成】页面下,修改“目标平台”为“Any CPU”就可以了。如下所示:





==========================华丽的分界线Over========================================

闲话谈完了,继续编写咱们的WebPart代码:

  1. using System;
  2. using System.Web.UI;
  3. using System.Web.UI.WebControls;
  4. using System.Web.UI.WebControls.WebParts;
  5. using Microsoft.SharePoint;
  6. namespace MyFirstWebPart.VisualWebPart1
  7. {
  8. public partial class VisualWebPart1UserControl : UserControl
  9. {
  10. protected void Page_Load(object sender, EventArgs e)
  11. {
  12. if (!IsPostBack)
  13. {
  14. BindData();
  15. }
  16. }
  17. private void BindData()
  18. {
  19. SPSecurity.RunWithElevatedPrivileges(delegate() {
  20. SPList list = SPContext.Current.Web.Lists["员工列表"];
  21. SPQuery query = new SPQuery();
  22. query.ViewFields = "<FieldRef Name='Title' /><FieldRef Name='_x5458__x5de5__x59d3__x540d_' /><FieldRef Name='_x5bb6__x5ead__x4f4f__x5740_' /><FieldRef Name='_x51fa__x751f__x65e5__x671f_' />";
  23. this.GridView1.DataSource  = list.GetItems(query).GetDataTable();
  24. this.GridView1.DataBind();
  25. });
  26. }
  27. }
  28. }
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint; namespace MyFirstWebPart.VisualWebPart1
{
public partial class VisualWebPart1UserControl : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData();
} } private void BindData()
{
SPSecurity.RunWithElevatedPrivileges(delegate() {
SPList list = SPContext.Current.Web.Lists["员工列表"];
SPQuery query = new SPQuery();
query.ViewFields = "<FieldRef Name='Title' /><FieldRef Name='_x5458__x5de5__x59d3__x540d_' /><FieldRef Name='_x5bb6__x5ead__x4f4f__x5740_' /><FieldRef Name='_x51fa__x751f__x65e5__x671f_' />";
this.GridView1.DataSource = list.GetItems(query).GetDataTable();
this.GridView1.DataBind();
});
}
}
}

当然了,如果你对CAML不太熟悉,完全可以用下面代码来代替,这样将查处所有的字段。(CAML具有较强的条件查询、排序等功能)

  1. private void BindData()
  2. {
  3. SPSecurity.RunWithElevatedPrivileges(delegate() {
  4. SPList list = SPContext.Current.Web.Lists["员工列表"];
  5. //SPQuery query = new SPQuery();
  6. //query.ViewFields = "<FieldRef Name='Title' /><FieldRef Name='_x5458__x5de5__x59d3__x540d_' /><FieldRef Name='_x5bb6__x5ead__x4f4f__x5740_' /><FieldRef Name='_x51fa__x751f__x65e5__x671f_' />";
  7. //this.GridView1.DataSource  = list.GetItems(query).GetDataTable();
  8. this.GridView1.DataSource = list.GetItems().GetDataTable();
  9. this.GridView1.DataBind();
  10. });
  11. }
        private void BindData()
{
SPSecurity.RunWithElevatedPrivileges(delegate() {
SPList list = SPContext.Current.Web.Lists["员工列表"];
//SPQuery query = new SPQuery();
//query.ViewFields = "<FieldRef Name='Title' /><FieldRef Name='_x5458__x5de5__x59d3__x540d_' /><FieldRef Name='_x5bb6__x5ead__x4f4f__x5740_' /><FieldRef Name='_x51fa__x751f__x65e5__x671f_' />";
//this.GridView1.DataSource = list.GetItems(query).GetDataTable();
this.GridView1.DataSource = list.GetItems().GetDataTable();
this.GridView1.DataBind();
});
}

好了,代码及设计到此结束。下面修改一下咱们的WebPart在页面中的标题:

打开【VisualWebPart1.webpart】页面,修改Title属性为:<property name="Title" type="string">员工信息展示</property>



在确认无误的情况下,选择解决方案 → 右键点击→部署解决方案。WebPart的编写及部署到此就告一段落。



3:页面上添加WebPart

该部分内容主要将以贴图的形式来介绍。

1)首先在浏览器中输入咱们的网站地址:http://moss:8000

2)点击网站操作右边的【页面】按钮,将显示页面对应的菜单:



3)点击【编辑页面】按钮,将进入页面的设计阶段:

4)点击【添加Web部件】

5)在【类别】中选择【Custom】(用户自定义WebPart)

6)点击【员工信息展示】,并点击添加





7)点击【停止编辑】按钮,并重新刷新主页,将在主页上显示列表,并展示出列表【员工列表】中的内容。

【列表内容】



【首页Gridview内容】





4:WebPart调试

webpart的调试比较简单,直接在需要调试的代码处设置断点,并按下F5,就可直接到达调试断点处。







WebPart部分就为大家介绍到这里,希望对大家有所帮助!

Sharepoint 2010 之 WebPart的更多相关文章

  1. [原] SharePoint 2010 WebPart与Google地图系列 一:创建显示地图的WebPart

    摘要: 作为信息化先驱的产品SharePoint 2010竟然对GIS相关技术支持如此有限,试问现在哪个企业没有大量的项目需要结合Google地图来进行开发,单纯地从Google Javascript ...

  2. SharePoint 2010中重置windows 活动目录(AD)域用户密码的WebPart(免费下载)

    由于SharePoint 2013推出不久,并非所有的企业都会升级到SharePoint 2013的,毕竟升级不是打打补丁这么简单,更多的企业还是使用Sharepoint 2010版本的,因此本人自行 ...

  3. SharePoint 2010 隐藏快速启动栏之使用内容编辑器webpart

    SharePoint 2010 自带的webpart里有一个叫内容编辑,在媒体和内容分类里面: 将其添加到页面后效果: 点击用于添加新内容,此时注意Ribbon菜单中的变化: 这里可以看到,你可以插入 ...

  4. sharepoint 2010 如何使用sharepoint多媒体视频播放media webpart功能

    转:http://www.cfanz.cn/?c=article&a=read&id=40449 在sharepoint 2010中,有一个新的功能,支持在页面上播放视频.主要是通过一 ...

  5. 转载-SharePoint 2010 WebPart与Google地图系列 一:创建显示地图的WebPart

    [原] SharePoint 2010 WebPart与Google地图系列 一:创建显示地图的WebPart 摘要: 作为信息化先驱的产品SharePoint 2010竟然对GIS相关技术支持如此有 ...

  6. [SharePoint 2010] Visual Studio 2010內撰寫視覺化WebPart超簡單

    新一代的Visual Studio 2010對於SharePoint 2010的專案撰寫,有非常另人讚賞的改進. 以往寫一個WebPart要搞好多雜七雜八的步驟,也要硬寫HTML輸出,當然有人說可以寫 ...

  7. SharePoint 2010 WebPart Web部分 总的膏

    SharePoint 2010 WebPart Web部分 总的膏         之前写SharePoint WebPart Web部分相关的博客,我们没有做一个索引.网友在查看的时候非常不方便,于 ...

  8. 使用SharePoint 2010 母版页

    SharePoint 2010母版页所用的还是ASP.NET 2.0中的技术.通过该功能,实现了页面框架布局与实际内容的分离.虽然在本质上自定义母版页的过程和以前版本的SharePoint大致相同,但 ...

  9. SharePoint 2010 文档管理系列

    前言,这是自己第一次写一个系列的文档,本来想使用SharePoint 2013版本,但是碍于SharePoint 2013对于硬件要求过高,自己的笔记本无法承受,所以退而求其次选择了在SharePoi ...

随机推荐

  1. ios NSHashTable & NSMapTable

    在ios开发中大家用到更多的集合类可能是像NSSet或者NSDictionary,NSArray这样的.这里要介绍的是更少人使用的两个类,一个是NSMapTable,另一个是NSHashTable. ...

  2. ios 可变参数(va_list,va_start,va_end)

    例如:UIAlertView的init方法中的otherButtonTitles:(NSString *)otherButtonTitles, ...等多个可变参数. ios实现传递不定长的多个参数的 ...

  3. swing容器继承重绘问题解决

    swing容器继承重绘问题解决   以JPanel为例,继承JPanel,想动态为器更换背景,这就涉及到重绘问题.一下是本人重写代码: package ui; import java.awt.Grap ...

  4. Java文件操作 读写操作

    一.Java读取文件 案例1:读取D盘的1.txt文件 编码: File file = new File("D:/1.txt"); FileReader fr = new File ...

  5. 初步认识 Web Service

     Web Service初步认识   Web Service:不是框架,不是一种技术,而是一种跨平台,跨语言的规范. 作用:异构平台之间的交互,解决了不同平台,不同语言所编写的应用之间的相互调用.(远 ...

  6. c++ primer复习(五):类

    一:基本内容 1 类 数据成员:用于存储与类对象相关联的状态 成员函数:对数据成员进行操作 类将接口与实现分离,接口指定了类支持的操作,操作的具体实现细节是类的设计者才需要了解 2 类成员 类成员可以 ...

  7. C#使用Json

    AJAX传递复杂数据如果自己进行格式定义的话会经历组装.解析的过程,因此AJAX中有一个事实上的数据传输标准JSon. Json将复杂对象序列化为一个字符串,在浏览器端再将字符串反序列化为JavaSc ...

  8. mini2440移植uboot-2008.10 (一)

    今天是我申请此博客的第一天,从现在开始养成每次学完新东西,都要写博客进行总结的习惯!!!Come on! 首先就从这两天学的uboot开始吧,这两天学这个东西郁闷死了,不知道该怎么去学,尤其是到nan ...

  9. linux shell 逻辑运算符

    一.逻辑卷标 逻辑卷标 表示意思 1. 关于档案与目录的侦测逻辑卷标! -f 常用!侦测『档案』是否存在 eg: if [ -f filename ] -d 常用!侦测『目录』是否存在 -b 侦测是否 ...

  10. struts2与spring集成时action的class属性值意义

    struts2单独使用时action由struts2自己负责创建:与spring集成时,action实例由spring负责创建(依赖注入).这导致在两种情况下struts.xml配置文件的略微差异. ...