设为首页 收藏本站
查看: 1010|回复: 0

[经验分享] SharePoint中的列表(List) 与Content Type 之二

[复制链接]

尚未签到

发表于 2015-9-28 13:38:40 | 显示全部楼层 |阅读模式
  SharePoint的Web Part Galleries还有Master Page Galleries都是基于特制化了的文档库的实现.
  

  在一个更低的层次, WSS使用base types来对列表类型进行分类. 标准列表的base type是0, 而文档库的base type是1. 还有不那么常用的base type, 讨论论坛(3), 投票或调查列表(4), 问题列表 (5). base type定义了一个通常的column的集合, 基于相同base type的所有的列表类型会自动地集成这些column. 比如说, 每一个内建的base type定义了一个ID field. 这个field能允许WSS在幕后通过一个独一无二的整数来跟踪每一个列表中的item, 跟踪每一个文档库中的文档. WSS还为文档库添加了几个column到base type的column集合中, 普通的列表类型并不需要这些column.
  
  列表实例既可以有用户通过WSS的用户界面创建, 也可以由开发人员通过WSS的object model创建. 还可以通过在feature中添加一个CAML元素来创建一个列表实例. 让我们看一个基本的, 从内建的列表类型创建列表实例的代码例子吧.
  
  下面的例子提供了创建列表实例的代码. 在创建一个列表之前, 代码会检查确保一个相同title的列表不会已经存在. 你会注意到代码遍历当前站点的列表, 检查每一个列表, 看是否有匹配的title. 如果一个匹配title的列表不存在, 这个应用程序中的代码就会创建一个新的实例, 类型是Announcements , 并添加一个link到Quick Lunch菜单中, 方便访问.using Microsoft.SharePoint;
class Program
{
static void Main()
{
using (SPSite site = new SPSite("http://localhost"))
{
using (SPWeb web = site.OpenWeb())
{
string listName = "Litware News";
SPList list = null;
foreach (SPList currentList in web.Lists)
{
if (currentList.Title.Equals(listName,
StringComparison.InvariantCultureIgnoreCase))
{
list = currentList;
break;
}
}
if (list == null)
{
Guid listID = web.Lists.Add(listName,
"List for big news items",
SPListTemplateType.Announcements);
list = web.Lists[listID];
list.OnQuickLaunch = true;
list.Update();
}
}
}
}
}
  
  注意, 最后部分在SPList上对Update方法的调用. 这个调用是必须的, 用来保存任何你对列表属性所作的修改, 比如说, 在这个例子里, 在OnQuickLaunch属性上赋值true.
  
  列表还可以通过SPWeb类的GetList方法来访问到:SPList announcementsList = web.GetList("/Lists/Announcements");
  
  GetList方法使用到列表文件夹的站点相对路径, 或者是列表表单也的相对路径作为参数. 如果列表实例找不到, GetList方法会丢出一个类型为FileNotFoundException的异常. 检查一个列表是否存在而不抛出异常的唯一方式是遍历站点对象的列表, 检查是否存在.  

  GetList是一个通过URL访问列表的更好的方式. GetListFromUrl 和 GetListFromWebPartPageUrl 函数与GetList方法的功能一样, 但是会在失败时丢出更通用的SPException 异常, 而不是更加具有说明性的FileNotFoundException异常类型.

  
  你得到了一个SPList对象的引用之后, 你可以创建一个新的列表项, 方法是向列表的items集合添加一个SPListItem对象.  SPListItem 是一个通用的item类型, 它拥有的fields是根据列表的fields来的. 你可以实用下面的代码创建和保存新的列表项:SPListItem newItem = list.Items.Add();
newItem["Title"] = "Litware Goes Public!";
newItem["Body"] = " We all live in exciting times.";
newItem["Expires"] = DateTime.Now + TimeSpan.FromDays(2);
newItem.Update();
  
  SPListItem对象的Update方法会commit掉对列表的修改. 如果你不调用Update方法, 列表项的数据就不会被保存. List的columns是通过显示名称来指定的. 他们也可以通过column的GUID来得到, 还可以通过从0开始的columns集合的索引来得到. 如果一个指定的fields不存在, 那么会丢出ArgumentException 异常. 在某些情形下, 你会想要遍历这些fields, 使用foreash语句来查看这个field是否真的存在.foreach (SPField field in list.Fields)
{
if (!field.Hidden && !field.ReadOnlyField)
Console.WriteLine(field.Title);
}
  
  遍历fields还可以在遍历列表项的时候变得有用. 你可以使用field集合来访问列表项中的数据. 为了限制显示出来的field, 你会想要仅显示用户可以编辑的fields, 如同下面代码展示的一样:foreach (SPListItem item in list.Items)
{
foreach (SPField field in list.Fields)
{
if (!field.Hidden && !field.ReadOnlyField)
Console.WriteLine("{0} = {1}", field.Title, item[field.Id]);
}
}
  
  摘译自:
  Inside WSS 3.0 第六章
  
    

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-120054-1-1.html 上篇帖子: SharePoint中的列表(List) 与Content Type 之四 下篇帖子: 讨论一个问题:对于复杂的业务流程Sharepoint如何实现?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表