0

部門リストに「財務」を含むリストの名前フィールドを更新したかったのです。次のコードを書きましたが、「finance」が含まれているかどうかに関係なく、Name 列のすべての項目が更新されます。

私は何を間違っていますか?

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();
}     
4

5 に答える 5

3

FiledRefはFieldRefである必要があります。等号を忘れた場合は、次のようになります。

<FieldRef Name='Department' />

小さな編集: CAML で大文字と小文字が区別されるかどうかはわかりませんが、そうである場合は、開始場所を に変更し<Where>ます。

于 2012-10-09T13:15:55.767 に答える
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();
  }  
于 2012-10-09T13:14:29.283 に答える
1

以下の関数は、フォルダー名とアイテムが保存されているサブフォルダーの id を取得します。 folder = item.folder.

最初は null になります。

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());     
        }  
于 2015-01-07T14:22:37.563 に答える
0

そのため、この古い投稿に出くわしたばかりで、選択した回答についてコメントするのに十分な評判がありません.

しかし、SharePoint 2013 で CAML を使用する場合、大文字と小文字が区別されることはわかっています。

Just は、オープニング<where>が であることを意味します<Where>

問題が解決したことを願っています。

于 2015-02-06T18:58:04.667 に答える
0

以下の関数は、フォルダー名とアイテムが保存されているサブフォルダーの id を取得します。 folder = item.folder. 最初は null になります。

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());     
        }  

ありがとうデヴァ - チェライデヴァ

于 2015-01-07T14:25:41.450 に答える