zoukankan      html  css  js  c++  java
  • Sharepoint 2010 之 WebPart (实践篇)(转)

    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. staticvoid 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.         } 

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

    简单的说:在列表中所定义的字段名称(如果为汉字的话),其实相当于你的小名,而这个小名,是不能写到身份证中,他需要转换成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.  
    7. namespace MyFirstWebPart.VisualWebPart1 
    8.     public partial class VisualWebPart1UserControl : UserControl 
    9.     { 
    10.         protectedvoid Page_Load(object sender, EventArgs e) 
    11.         { 
    12.             if (!IsPostBack) 
    13.             { 
    14.                 BindData(); 
    15.             } 
    16.  
    17.         } 
    18.  
    19.         privatevoid BindData() 
    20.         { 
    21.             SPSecurity.RunWithElevatedPrivileges(delegate() { 
    22.                 SPList list = SPContext.Current.Web.Lists["员工列表"]; 
    23.                 SPQuery query = new SPQuery(); 
    24.                 query.ViewFields = "<FieldRef Name='Title' /><FieldRef Name='_x5458__x5de5__x59d3__x540d_' /><FieldRef Name='_x5bb6__x5ead__x4f4f__x5740_' /><FieldRef Name='_x51fa__x751f__x65e5__x671f_' />"
    25.                 this.GridView1.DataSource  = list.GetItems(query).GetDataTable(); 
    26.                 this.GridView1.DataBind(); 
    27.             }); 
    28.         } 
    29.     } 

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

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

    好了,代码及设计到此结束。下面修改一下咱们的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部分就为大家介绍到这里,希望对大家有所帮助!

  • 相关阅读:
    HDU 5585 Numbers
    HDU 3308 LCIS
    POJ 2991 Crane
    POJ 1436 Horizontally Visible Segments
    POJ 3667 Hotel
    HaiHongOJ 1003 God Wang
    【SDOI 2008】 递归数列
    5月19日省中提高组题解
    【HDU 1588】 Gauss Fibonacci
    【POJ 3233】Matrix Power Series
  • 原文地址:https://www.cnblogs.com/liubinurl/p/2471653.html
Copyright © 2011-2022 走看看