[SharePoint]list二次开发

转载 2012年03月27日 08:38:15

SharePoint的开发过程中,我们经常会遇到这样的场景:用户填写的资料需要进行分步进行,但是所有的数据信息都是存放在SharePoint 的一个大的List 中,这个时候我们用的最多的方法就是通过SharePoint的对象模型,对数据进行操作,来完成List信息的新增和更新。

这样的方法存在以下的一些问题:

缺点:

1.       重复性

A. 字段和控件的重新定义,不能使用SharePoint定义好的字段和控件

B. 数据的存储,需要通过对象模型进行开发来完成

2.       不稳定性

自己重新对数据的存储进行开发,添加了失败的风险

 

优点:

1.       灵活性

我们能更加方便、灵活的进行界面的设计

 

我在前期的SharePoint的开发过程中,经常使用此方法,虽然已经有点习惯通过此方法来对List的操作,但是心里总是用起来有点别扭,给我的感觉就是SharePointList的操作不应该是这样的,虽然能解决问题,但是肯定不是最好的。功夫不负有心人啦,终于让我想到一个更好的方法。

如果大家用过SharePoint中的SPGridView 或者是 DateTime 控件的时候,会发现SharePoint中还有一些其他的控件,SharePoint:RichTextField,但是这些控件应该是怎么样用的呢?

这些控件将解决我上面所说的问题,通过SharePoint中自带的一个Field控件,将能完成我们一些重新开放的工作。我们看下面的代码:

  1. Title:
  2. <SharePoint:TextField  ID="txtTitle" runat ="server" /> 
  3. 任务一:
  4. <SharePoint:RadioButtonChoiceField runat="server" ID="task"  />
  5. 会议说明
  6. <SharePoint:RichTextField runat="server" ID="rM"  />
  7. <SharePoint:UserField runat="server"  ID="user"/>
  8. <SharePoint:SaveButton runat="server" id="savebutton1" />

 

这些都是SharePoint中的Field控件,他们都存在以下的属性:

ControlMode:说明当前的状态 New,Edit,Display,Invaild

FieldName:Field的name

ListId: List的Id

 

所以我们对一个List新增的操作的时候,这样做就Ok了:

  1. Title:
  2. <SharePoint:TextField  ControlMode="" ID="txtTitle" runat ="server" FieldName="Title" ListId =” 898bf992-6360-4387-b2e3-d9a5dc696703”/> 
  3. 任务一:
  4. <SharePoint:RadioButtonChoiceField ControlMode="new"  FieldName="_x4f1a__x8bae__x5ba4_"   runat="server" ID="ad" ListId =” 898bf992-6360-4387-b2e3-d9a5dc696703” />
  5. 会议说明
  6. <SharePoint:RichTextField runat="server" ControlMode="New" CssClass="ms-rtelong"  FieldName="_x4f1a__x8bae__x8bf4__x660e_" ID="rM" ListId =” 898bf992-6360-4387-b2e3-d9a5dc696703”/>
  7. <SharePoint:UserField ControlMode="New" runat="server"  FieldName="_x9886__x5bfc_"   ID="user" ListId =” 898bf992-6360-4387-b2e3-d9a5dc696703” />
  8. <SharePoint:SaveButton runat="server" ControlMode="New" Text="afd" id="savebutton1" ListId =” 898bf992-6360-4387-b2e3-d9a5dc696703” />

 

当然这个前提是已经存在一个List,存在Title,任务,会议说明,一个用户类型的字段,分别对应的ListId FieldName 如上面描述的。

 

这个方法是肯定不够好了,因为要去查看List对应的GuidField StaticName这个是一个很麻烦的事情。

我们只要通过一个初始化的方法就可以解决此问题:

  1. Title:
  2. <SharePoint:TextField  ControlMode=" new " ID="txtTitle" runat ="server" FieldName="Title" ListId =” 898bf992-6360-4387-b2e3-d9a5dc696703” OnInit="OnInit1"/> 
  3. 任务一:
  4. <SharePoint:RadioButtonChoiceField ControlMode="new"  FieldName="_x4f1a__x8bae__x5ba4_"   runat="server" ID="ad" ListId =” 898bf992-6360-4387-b2e3-d9a5dc696703”  OnInit="OnInit1"/>
  5. 会议说明
  6. <SharePoint:RichTextField runat="server" ControlMode="New" CssClass="ms-rtelong"  FieldName="_x4f1a__x8bae__x8bf4__x660e_" ID="rM" ListId =” 898bf992-6360-4387-b2e3-d9a5dc696703” OnInit="OnInit1"/>
  7. <SharePoint:UserField ControlMode="New" runat="server"  FieldName="_x9886__x5bfc_"   ID="user" ListId =” 898bf992-6360-4387-b2e3-d9a5dc696703” OnInit="OnInit1" />
  8. <SharePoint:SaveButton runat="server" ControlMode="New" Text="afd" id="savebutton1" ListId =” 898bf992-6360-4387-b2e3-d9a5dc696703” OnInit="OnInit1" />

 

初始化的方法

  1.  protected void OnInit1(object sender, EventArgs e)
  2.     {
  3.         SPSite site = new SPSite("http://pc-moss");
  4.         SPWeb web = site.OpenWeb();
  5.         SPList list = web.Lists["会议室预定"];
  6.         ad.ListId = list.ID;
  7.         txtTitle.ListId = list.ID;
  8.         savebutton1.ListId = list.ID;
  9.         rM.ListId = list.ID;
  10.         user.ListId = list.ID;
  11.         ad.Visible = true;
  12.         Response.Write(list.ID);
  13.     }

 

这个方法用在控件的Oninit上才有效哦,如果用到其他的地方就没有什么用拉,这个可以自己体会一下。

编辑和展示页面需要改动的地方:ControlModeSharePoint:SaveButton,还有一个重要的改动就是需要添加一个ItemId属性。这样就ok了。

 

如果这些代码是放在路径是Lists/list22/…aspx下面的话,应该是不用指定ListId的,这个可以试一下,我还有进行验证!

[SharePoint]list二次开发

在SharePoint的开发过程中,我们经常会遇到这样的场景:用户填写的资料需要进行分步进行,但是所有的数据信息都是存放在SharePoint 的一个大的List 中,这个时候我们用的最多的方法就是通...
  • stormlly
  • stormlly
  • 2008年11月30日 17:26
  • 4494

SharePoint 对list操作(重新整理)

概要 在sharepoint中的自定义web part会涉及到对list里面的item进行操作,这篇文单将会讲解如何修改list里的item。 我们先看一个示例 /// /// /// ...
  • jason_dct
  • jason_dct
  • 2012年01月11日 10:51
  • 4162

SharePoint 2013 开发文档管理字段小记

前言   最近有这样一个需求,就是要求在列表库里管理文档,需要多文档管理、带版本控制、可以单独授权等基本操作。于是乎,就开发了一个自定义段,这里介绍一下字段的思路,里面有一些遇到的问题,在群友的帮助...
  • linyustar
  • linyustar
  • 2016年01月28日 11:27
  • 1663

彻底搞懂SharePoint List Threshold(列表阈值)

原文链接:点击打开链接
  • shrenk
  • shrenk
  • 2014年09月13日 07:17
  • 2119

SharePoint 2013 新建网站集图解(绝对菜鸟篇)

前言:接触SharePoint的人可能是越来越多,但是很多人一接触就很迷茫,在技术群里问如何新建网站集,这样一篇图解,帮助新手学习在搭建好SharePoint环境之后,如何创建一个网站集,做一个基本的...
  • linyustar
  • linyustar
  • 2013年09月11日 14:18
  • 6538

C#读取SharePoint的List中的数据及操作SharePoint

一般SharePoint都有提供一个webservice来访问、操作SharePoint的各项数据。 地址一般为http://server/_vti_bin/Lists.asmx 下面是一...
  • haukwong
  • haukwong
  • 2013年05月30日 12:58
  • 5278

sharepoint list权限 (二)

public override void ItemAdded(SPItemEventProperties properties) { //用此方法模拟管理员账户...
  • jason_dct
  • jason_dct
  • 2013年06月04日 10:10
  • 1571

[SharePoint] 通过Sharepoint 发邮件

      大家都知道在.net 中实现邮件的发送已经不是什么难事,但是需要配置smtp服务器。在Sharepoint这个就没有必要了,只要MOSS 或者是 WSS 3.0 配置了 Smtp,我们就可...
  • stormlly
  • stormlly
  • 2008年10月25日 18:17
  • 2799

在SharePoint中使用关联列表(Related List)

使用关联列表(related list)
  • shrenk
  • shrenk
  • 2015年02月26日 01:15
  • 1064

如何从Excel中把数据导入到SharePoint List(Import Excel data to SharePoint List)

SharePoint列表功能强大是众所周知的,但是存在一个缺陷,不能与Excel很好的关联。这应该是SharePoint中缺失的功能。虽然在新建列表时,用户可以选择从电子表单自定义创建,但是编辑列表时...
  • yl_99
  • yl_99
  • 2011年06月16日 16:23
  • 4459
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[SharePoint]list二次开发
举报原因:
原因补充:

(最多只允许输入30个字)