【问题标题】:Retrieve list item using CSOM on SharePoint online isn't working在 SharePoint Online 上使用 CSOM 检索列表项不起作用
【发布时间】:2013-12-24 10:12:56
【问题描述】:

我使用提供商托管模型在 SharePoint Online 上开发应用模型。

从 clientwebpart,我想访问一个 Sharepoint 列表项。我可以访问列表对象但无法获取列表项(始终为空)。我已经按照“SharePoint 示例包的应用程序 - SharePoint 2013 通过在应用程序中使用 CSOM 执行基本数据访问操作”中的示例代码,但仍然无法正常工作。

这是我的代码:

SharePointContextToken contextToken;
Uri sharepointUrl;
string accessToken;

TokenHelper.TrustAllCertificates();
string contextTokenString = TokenHelper.GetContextTokenFromRequest(Request);

if (contextTokenString != null)
{
    contextToken = TokenHelper.ReadAndValidateContextToken(contextTokenString, Request.Url.Authority);

    sharepointUrl = new Uri(Request.QueryString["SPHostUrl"]);
    accessToken = TokenHelper.GetAccessToken(contextToken, sharepointUrl.Authority).AccessToken;

    using (ClientContext clientContext = TokenHelper.GetClientContextWithAccessToken(sharepointUrl.ToString(), accessToken))
    {
        Web web = clientContext.Web;
        ListCollection lists = web.Lists;

        List selectedList = lists.GetByTitle("LeaveCategory");

        clientContext.Load<ListCollection>(lists); // this lists object is loaded successfully
        clientContext.Load<List>(selectedList);  // this list object is loaded successfully

        clientContext.ExecuteQuery();

        CamlQuery camlQuery = new CamlQuery();
        camlQuery.ViewXml = @"<View><Query><Where><IsNotNull><FieldRef Name='ID' /></IsNotNull></Where></Query><ViewFields><FieldRef Name='ID' /></ViewFields></View>";

        Microsoft.SharePoint.Client.ListItemCollection listItems = selectedList.GetItems(camlQuery);

        clientContext.Load<Microsoft.SharePoint.Client.ListItemCollection>(listItems); // problem here, this list items is return empty 

        clientContext.ExecuteQuery();
    }
}

我犯了什么小错误吗?

另外,我正在尝试创建新项目并遵循How to: Create a basic provider-hosted app for SharePoint 的说明,并附加代码以检索列表项,但它仍然返回 0 项。

有没有人成功地做到了这一点?

【问题讨论】:

    标签: c# sharepoint


    【解决方案1】:

    它现在可以工作了,

    因为我们必须在 AppManifest.xml 文件中为应用添加特定权限

    我在范围内添加“列表”并授予它“FullControl”权限

    【讨论】:

      【解决方案2】:

      仅在下面执行列表范围完全权限后,它对我有用:

      在 Scope 单元格中,从下拉列表中选择 Web。

      在权限单元格中,从下拉列表中选择读取。

      【讨论】:

        猜你喜欢
        • 2019-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-21
        • 2019-12-11
        • 2017-11-23
        • 1970-01-01
        • 2017-01-30
        相关资源
        最近更新 更多