如何使用CSOM发现与SPList一起使用的正确内部名称?

本文关键字:内部 CSOM 何使用 发现 一起 SPList | 更新日期: 2023-09-27 18:08:19

我正在使用客户端服务对象模型(SharePoint 2013 on-premise)加载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());
            }
        }
    }
}

我收到异常:

类型的未处理异常"Microsoft.SharePoint.Client.PropertyOrFieldNotInitializedException"发生在Microsoft.SharePoint.Client.dll

通常情况下,我认为这种情况发生在下一行中引用的名称与SharePoint后端中的名称不匹配时:

MessageBox.Show(item["Status"].ToString());

然而,我不明白这是怎么回事,因为我在CamlQuery中使用了完全相同的命名。我还使用了SP Caml Query Helper 2013,字段名似乎是正确的。

如何找到我应该引用的正确字段名称?

如何使用CSOM发现与SPList一起使用的正确内部名称?

进入sharepoint网站的列表,进入列表设置,然后点击你想要获得正确名称的列,它将出现在地址栏中。

如:YourSite/_layouts/FldEdit.aspx ? = {Guid},列表字段=成本% 5 fx0020 % 5 fcentre % 5 fx0020 % 5 fcode

在本例中,

字段的名称是Cost_x0020_Centre_x0020_Code(%5F是一个"_"%20是一个空格,等等,你可能需要找到一个列表。)

这不是一个完整的列表,但它有大部分http://www.werockyourweb.com/url-escape-characters/