MOSS中对列表的一些操作(创建,查询等)

本文介绍了如何使用SharePoint对象模型进行列表操作,包括查询列表字段、创建列表、添加列表项及查询列表项信息等关键步骤,并详细展示了使用SPQuery与SPSiteDataQuery进行复杂查询的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.查询列表的所有字段
SPSite site = new SPSite("http://carysun");

SPWeb web=site.OpenWeb();

SPList list = web.GetList("/IT Infrastructure");

foreach (SPField sf in list.Fields)

{

    Console.WriteLine(sf.Title);

}

site.dispose();

web.dispose();

 

2.使用对象模型创建列表,SPListTemplateType.Announcements指定使用通知内容类型作为模板来创建。
注意一定要调用Update()方法。
string listName="AnnouList";                   

foreach(SPList currList in web .Lists)

{     

   if(currList.Title.Equals(listName,StringComparison.InvariantCultureIgnoreCase))

   {

      list=currList;

      break;

   }

}

if(list==null)

{

     Guid listID=web.Lists.Add(listName,"New nnouncements",SPListTemplateType.Announcements);

     list=web.Lists[listID];

     list.OnQuickLaunch=true;

     list.Update();

 }

3.使用对象模型给列表添加item,注意一定要调用Update()方法。
SPListItem newItem = null;

newItem = list.Items.Add();

newItem["Title"] = "AnnouItem1";

newItem["Body"] = "The first AnnouItem1 ";

newItem["Expires"] = DateTime.Now + TimeSpan.FromDays(2);

newItem.Update();

 

newItem = list.Items.Add();

newItem["Title"] = "AnnouItem2";

newItem["Body"] = "The second AnnouItem2.";

newItem["Expires"] = DateTime.Now + TimeSpan.FromDays(5);

newItem.Update();


4.查询item的相关信息
foreach (SPListItem listItem in list.Items)

{

      foreach (SPField field in list.Fields)

      {

          if (!field.Hidden && !field.ReadOnlyField)

                Console.WriteLine("{0} = {1}", field.Title, newItem[field.Id]);

       }

}

5. 如果你要想得到一个列表的item,你可以通过WebId, ListId, and ID来得到.
SPWeb parentWeb = web.Site.OpenWeb(new Guid(row["WebId"].ToString()));

SPList list = parentWeb.Lists[ new Guid(row["ListId"].ToString()) ];

SPListItem item = list.GetItemById((int.Parse(row["ID"].ToString())));


6.使用SPQuery来查询列表中item信息:
SPQuery query = new SPQuery();

query.ViewFields = @"<FieldRef Name='Title'/><FieldRef Name='Created'/>";

query.Query = @"<Where>

       <Neq>

         <FieldRef Name='Created' />

         <Value Type='DateTime'>

         <Today /></Value>

       </Neq>

    </Where>";

 

SPList list = web.Lists["AnnouList"];

SPListItemCollection items = list.GetItems(query);

foreach (SPListItem expiredItem in items)

{

    Console.WriteLine(expiredItem["Title"]);

    Console.WriteLine(expiredItem["Created"]);

}

6.1. ViewFields 表示你查询后要返回的字段
6.2. Query表示查询过滤的表达式,使用CAML语言
7. 使用SPSiteDataQuery来查询列表中item信息
SPSiteDataQuery query = new SPSiteDataQuery();

query.Lists = @"<Lists ServerTemplate='104' />";

query.ViewFields = @"<FieldRef Name='Title'/><FieldRef Name='Created'/>";

query.Webs = "<Webs Scope='SiteCollection' />";

string queryText =@"<Where>

         <Neq>

           <FieldRef Name='Created' />

           <Value Type='DateTime'>

           <Today /></Value>

         </Neq>

     </Where>";

query.Query = queryText;

DataTable table = web.GetSiteData(query);

foreach (DataRow row in table.Rows)

{

     Console.WriteLine(row["Title"].ToString() + row["Created"].ToString());

}

7.1. query.Lists = @"<Lists ServerTemplate='104' />";中104代表通知列表类型
7.2 query.Webs = "<Webs Scope='SiteCollection' />";为查询的范围。
7.3. CAML的基本格式是这样的:“<Where><operator><operand /><operand /></operator> </Where>”.

7.4.使用SPQuery返回的是SPListItemCollection,而SPSiteDataQuery可以从不同的列表或是整个网站集查,实际上是返回了一个ADO.NET DataTable对象。
7.5 下表是CAML查询的一些简单说明:

元素
 说明
 
And
 并且
 
BeginsWith
 以某字符串开始的
 
Contains
 包含某字符串
 
Eq
 等于
 
FieldRef
 一个字段的引用 (在GroupBy 中使用)
 
Geq
 大于等于
 
GroupBy
 分组
 
Gt
 大于
 
IsNotNull
 非空
 
IsNull
 空
 
Leq
 小于等于
 
Lt
 小于
 
Neq
 不等于
 
Now
 当前时间
 
Or
 或
 
OrderBy
 排序
 
Today
 今天的日期
 
TodayIso
 今天的日期(ISO格式)
 
Where
 Where子句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值