2012-10-09 71 views
0

我想更新部門列表中包含'finance'的列表中的名稱字段。我編寫了下面的代碼,但它更新了名稱列中的每個項目,無論它是否包含'finance'。CAML查詢從SPList中獲取項目

我在做什麼錯了?

SPListItemCollection Items = RiskAssesment.GetItems(new SPQuery() 
{ 
    Query = @"<where> 
        <Eq> 
         <FiledRef Name 'Department'/> 
         <Value Type='Text'>Finance </Value> 
        </Eq> 
       </Where>" 
}); 

foreach (SPListItem item in Items) 
{ 
    item["Name"] = "abcdef"; 
    item.Update(); 
}  
+0

在你的代碼中你沒有在查詢或錯字? FiledRef應該是FieldRef – Mark

回答

3

FiledRef應該FieldRef。你忘了等號,它應該是這樣的:

<FieldRef Name='Department' />

小編輯: 我不知道,如果CAML是區分大小寫的,但如果它是:改變opening-在哪裏<Where>

+2

我愛CAML的方式只是返回整個結果集,如果你陷入困境查詢了一點: -/ – Rawling

+0

大聲笑,I'va也有我的奮鬥與CAML查詢,即使是簡單的... – Abbas

+0

只是爲了請確保,如果查詢不起作用,請嘗試使用標籤對其進行包裝。 – Alex

1
SPListItemCollection Items = RiskAssesment.GetItems(new SPQuery() 
{ 
    Query = @"<Where> 
    <Eq> 
     <FieldRef Name='Department'/> 
     <Value Type='Text'>Finance </Value></Eq></Where>" 
}); 

    foreach (SPListItem item in Items) 
    { 
     item["Name"]="abcdef"; 
     item.Update(); 
    } 
1

下面的函數獲取的文件夾名稱和項目存儲 文件夾= item.folder子文件夾的ID。

最初它將是空的。

static string GetParentFolder(SPListItem itemToFind, SPFolder folder) 
     { 
      SPQuery query = new SPQuery(); 
      // query.Query = "<OrderBy><FieldRef Name='Title'/></OrderBy>"; 
      query.Query = "<Where><Eq><FieldRef Name=\"ID\"/><Value Type=\"Integer\">"+ itemToFind.ID +"</Value></Eq></Where>"; 
      query.Folder = folder; 
      query.ViewAttributes = "Scope=\"Recursive\""; 
      SPListItemCollection items = itemToFind.ParentList.GetItems(query); 
      int intpartentFolderID=0 ; 
      if (items.Count > 0) 
      { 
      foreach (SPListItem item in items) 
      { 

       SPFile f = item.Web.GetFile(item.Url); 

       string test11 = f.ParentFolder.Name; 
       intpartentFolderID = f.ParentFolder.Item.ID; 

       //string test1 = item.File.ParentFolder.Name; 

       return (intpartentFolderID.ToString()); 

      } 
      } 
      return (intpartentFolderID.ToString());  
     } 
0

下面的函數獲取的文件夾名稱和項目存儲 文件夾= item.folder子文件夾的ID。 最初它將是空的。

static string GetParentFolder(SPListItem itemToFind, SPFolder folder) 
     { 
      SPQuery query = new SPQuery(); 
      // query.Query = "<OrderBy><FieldRef Name='Title'/></OrderBy>"; 
      query.Query = "<Where><Eq><FieldRef Name=\"ID\"/><Value Type=\"Integer\">"+ itemToFind.ID +"</Value></Eq></Where>"; 
      query.Folder = folder; 
      query.ViewAttributes = "Scope=\"Recursive\""; 
      SPListItemCollection items = itemToFind.ParentList.GetItems(query); 
      int intpartentFolderID=0 ; 
      if (items.Count > 0) 
      { 
      foreach (SPListItem item in items) 
      { 
       SPFile f = item.Web.GetFile(item.Url); 

       string test11 = f.ParentFolder.Name; 
       intpartentFolderID = f.ParentFolder.Item.ID; 

       //string test1 = item.File.ParentFolder.Name; 

       return (intpartentFolderID.ToString()); 

      } 
      } 
      return (intpartentFolderID.ToString());  
     } 

感謝 Deva- Cheraideva

0

所以我只是碰到這種較早的帖子來了,我沒有足夠的聲譽所選擇的答案發表評論。

但我知道,使用CAML時肯定是區分在SharePoint 2013的敏感

就意味着開口<where>應該<Where>

希望你解決了你的問題!