`
yzd
  • 浏览: 1821153 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SP Caml查询

 
阅读更多
<p><textarea cols="84" rows="15" name="code" class="c-sharp">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);
}
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 &amp;&amp; !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 = @"&lt;FieldRef Name='Title'/&gt;&lt;FieldRef Name='Created'/&gt;";
query.Query = @"&lt;Where&gt;
    &lt;Neq&gt;
     &lt;FieldRef Name='Created' /&gt;
     &lt;Value Type='DateTime'&gt;
     &lt;Today /&gt;&lt;/Value&gt;
    &lt;/Neq&gt;
  &lt;/Where&gt;";
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 = @"&lt;Lists ServerTemplate='104' /&gt;";
query.ViewFields = @"&lt;FieldRef Name='Title'/&gt;&lt;FieldRef Name='Created'/&gt;";
query.Webs = "&lt;Webs Scope='SiteCollection' /&gt;";
string queryText =@"&lt;Where&gt;
     &lt;Neq&gt;
      &lt;FieldRef Name='Created' /&gt;
      &lt;Value Type='DateTime'&gt;
      &lt;Today /&gt;&lt;/Value&gt;
     &lt;/Neq&gt;
   &lt;/Where&gt;";
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 = @"&lt;Lists ServerTemplate='104' /&gt;";中104代表通知列表类型
  7.2 query.Webs = "&lt;Webs Scope='SiteCollection' /&gt;";为查询的范围。
  7.3. CAML的基本格式是这样的:“&lt;Where&gt;&lt;operator&gt;&lt;operand /&gt;&lt;operand /&gt;&lt;/operator&gt; &lt;/Where&gt;”.
  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子句

</textarea></p>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics