如何使用 CSOM 发现与 SPList 一起使用的正确内部名称
How can I discover the right internal names to use with a SPList using CSOM
我正在使用客户端服务对象模型(本地 SharePoint 2013)加载 SharePoint 列表。我正在使用以下代码:
private void buttonRefreshOrders_Click(object sender, RoutedEventArgs e)
{
using (var ctx = new ClientContext("http://sharepoint/ci/resources"))
{
var list = ctx.Web.Lists.GetByTitle("Resource Order Form Content");
var query = new CamlQuery
{
ViewXml =
@"<Where><Or><Eq><FieldRef Name=""Status""></FieldRef><Value Type=""Text"">Approved</Value></Eq><IsNotNull><FieldRef Name=""Status"" /></FieldRef></IsNotNull></Or></Where>"
};
var collListItem = list.GetItems(query);
ctx.Load(collListItem);
ctx.ExecuteQuery();
if (collListItem.Count == 0)
{
MessageBox.Show(
"No orders are currently within the queue.",
"Information Center",
MessageBoxButton.OK,
MessageBoxImage.Information);
}
else
{
MessageBox.Show("Success!");
foreach (var item in collListItem)
{
MessageBox.Show(item["Status"].ToString());
}
}
}
}
我收到异常:
An unhandled exception of type
'Microsoft.SharePoint.Client.PropertyOrFieldNotInitializedException'
occurred in Microsoft.SharePoint.Client.dll
通常我认为当以下行中引用的名称与 SharePoint 后端中的名称不匹配时会发生这种情况:
MessageBox.Show(item["Status"].ToString());
但是我不明白这是怎么回事,因为我在我的 CamlQuery 中使用了完全相同的命名。我还使用了 SP Caml Query Helper 2013
并且字段名称似乎是正确的。
如何找到我应该引用的正确字段名称?
转到您的共享点网站上的列表,转到列表设置,然后单击您要查找的正确名称的列,然后它就会出现在地址栏中。
EG: YourSite/_layouts/FldEdit.aspx?List={Guid}&Field=Cost%5Fx0020%5FCentre%5Fx0020%5FCode
在这种情况下,您想要的字段名称是 Cost_x0020_Centre_x0020_Code
(%5F 是一个“_”,%20 是一个 space,等等你可能需要找出这些列表。)
这不是一个完整的列表,但它包含了大多数 http://www.werockyourweb.com/url-escape-characters/
我正在使用客户端服务对象模型(本地 SharePoint 2013)加载 SharePoint 列表。我正在使用以下代码:
private void buttonRefreshOrders_Click(object sender, RoutedEventArgs e)
{
using (var ctx = new ClientContext("http://sharepoint/ci/resources"))
{
var list = ctx.Web.Lists.GetByTitle("Resource Order Form Content");
var query = new CamlQuery
{
ViewXml =
@"<Where><Or><Eq><FieldRef Name=""Status""></FieldRef><Value Type=""Text"">Approved</Value></Eq><IsNotNull><FieldRef Name=""Status"" /></FieldRef></IsNotNull></Or></Where>"
};
var collListItem = list.GetItems(query);
ctx.Load(collListItem);
ctx.ExecuteQuery();
if (collListItem.Count == 0)
{
MessageBox.Show(
"No orders are currently within the queue.",
"Information Center",
MessageBoxButton.OK,
MessageBoxImage.Information);
}
else
{
MessageBox.Show("Success!");
foreach (var item in collListItem)
{
MessageBox.Show(item["Status"].ToString());
}
}
}
}
我收到异常:
An unhandled exception of type 'Microsoft.SharePoint.Client.PropertyOrFieldNotInitializedException' occurred in Microsoft.SharePoint.Client.dll
通常我认为当以下行中引用的名称与 SharePoint 后端中的名称不匹配时会发生这种情况:
MessageBox.Show(item["Status"].ToString());
但是我不明白这是怎么回事,因为我在我的 CamlQuery 中使用了完全相同的命名。我还使用了 SP Caml Query Helper 2013
并且字段名称似乎是正确的。
如何找到我应该引用的正确字段名称?
转到您的共享点网站上的列表,转到列表设置,然后单击您要查找的正确名称的列,然后它就会出现在地址栏中。
EG: YourSite/_layouts/FldEdit.aspx?List={Guid}&Field=Cost%5Fx0020%5FCentre%5Fx0020%5FCode
在这种情况下,您想要的字段名称是 Cost_x0020_Centre_x0020_Code (%5F 是一个“_”,%20 是一个 space,等等你可能需要找出这些列表。)
这不是一个完整的列表,但它包含了大多数 http://www.werockyourweb.com/url-escape-characters/