不确定这会解决那个错误信息,但以下是如何使用“名称”:
“名称”(用于开箱即用的文档库)的内部名称为“BaseName”。
您可以使用PowerShell查找列表上所有列的内部名称:
$web = Get-SPWeb http://yoursiteurl
$web.lists["The List Name"].Fields | FL Title, InternalName
示例查询:
$query.set_innerXML("<Where><Eq><FieldRef Name='BaseName'></FieldRef><Value Type='Text'>" + $ItemName + "</Value></Eq></Where>")
Powershell中的完整示例:
function Update-SPItem($proxy, $ItemName, $listName, $lastModified, $firstName, $lastName, $chID, $emplNumber, )
{
$doc = New-Object System.Xml.XmlDocument
$viewFields = $doc.CreateElement("ViewFields")
$viewFields.set_innerXML("<FieldRef Name='ID'></FieldRef>")
$queryOptions = $doc.CreateElement("QueryOptions")
$queryOptions.set_innerXML("<IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns><DateInUtc>FALSE</DateInUtc><ViewAttributes Scope='RecursiveAll'/>")
$query = $doc.CreateElement("Query")
$query.set_innerXML("<Where><Eq><FieldRef Name='BaseName'></FieldRef><Value Type='Text'>" + $ItemName + "</Value></Eq></Where>")
$results = $proxy.GetListItems($listName, "", $query, $viewFields, "", $queryOptions, "")
$rowXml = $results.GetElementsByTagName("z:row")
$ItemID = $rowXml.Item(0).GetAttribute("ows_ID")
$batch = $doc.CreateElement("Batch")
$batch.SetAttribute("OnError", "Continue")
$batch.SetAttribute("ListVersion","1")
$batch.SetAttribute("ViewName", "")
$batch.InnerXml = "<Method ID='1' Cmd='Update'><Field Name='ID'>" + $ItemID +
"</Field><Field Name='ImageCreateDate'>" + $lastModified +
"</Field><Field Name='FirstName'>" + $firstName +
"</Field><Field Name='LastName'>" + $lastName +
"</Field><Field Name='CardHolderID'>" + $chID +
"</Field><Field Name='EmployeeNumber'>" + $emplNumber +
"</Field></Method>"
$result = $proxy.UpdateListItems($listName, $batch)
}
SPListItem[string fieldName]
)需要使用显示名称,在某些地方(如SPQuery
)需要使用内部名称。查看字段的内部名称最简单的方法是进入 SharePoint 网站上的字段定义,然后检查 URL 中的查询字符串。例如:http://localhost/_layouts/FldEdit.aspx?List={F8645DD3-CE80-4ECF-849F-6F851EECA2A7}&Field=LocalNumber
,我的“本地号码”字段的内部名称为“LocalNumber”。 - Marek Kembrowski