我想更新部门列表中包含'finance'的列表中的Name字段。我编写了以下代码,但它更新了Name列中的每个项目,无论它是否包含“finance”。
我做错了什么?
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 :(得分:3)
FiledRef 应为 FieldRef 。你忘记了等号,它应该是这样的:
<FieldRef Name='Department' />
小编辑:
我不确定CAML是否区分大小写,但如果是:将开放位置更改为<Where>
。
答案 1 :(得分: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();
}
答案 2 :(得分: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());
}
答案 3 :(得分: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());
}
由于 Deva- Cheraideva
答案 4 :(得分:0)
所以我刚刚看到这篇较老的帖子,而且我没有足够的声誉对所选答案发表评论。
但我知道在SharePoint 2013中使用CAML时肯定是区分大小写的。
仅表示开场<where>
应为<Where>
。
希望你的问题得到解决!