- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 Sharepoint Online 实例上使用 Sharepoint 客户端对象模型 (CSOM) 实现以下目标:
SharepointResultTable
中的一行在伪代码中:
var results = Sharepoint.GetSearchResults("Keyword");
var specificItem = results[2];
var itemId = sepcificItem.UniqueId;
Store(itemId);
之后:
var itemId = LoadItemId();
var item = Sharepoint.GetItem(itemId);
查询部分工作正常,我得到一个搜索结果表,为每个结果提供很多字段值,例如不同的 URL 以及唯一标识符、标题等。
var clientContext = new ClientContext(SharepointUri);
clientContext.Credentials = new SharePointOnlineCredentials(SharepointUserName, GetSecureString(SharepointPassword));
var keywordQuery = new KeywordQuery(clientContext);
keywordQuery.QueryText = keyword;
var searchExecutor = new SearchExecutor(clientContext);
var sharepointResultTable = searchExecutor.ExecuteQuery(keywordQuery);
clientContext.ExecuteQuery();
foreach (var resultRow in sharepointResultTable.Value[0].ResultRows)
{
var path = (string) resultRow["ServerRedirectedURL"];
var id = Guid.Parse((string) resultRow["UniqueId"]);
}
我现在缺少的部分是:我应该为结果行存储哪些值以及如何根据此数据执行高效查询以便稍后获取项目?(当然,我可以再次使用相同的关键字执行查询,但我知道 id 或我存储的任何内容,必须有更有效的方法。此外,该项目可能不是以前的关键字不再存在,因为它可能已更改)。
我试过了,使用结果表列“UniqueId”中的 id:
var clientContext = new ClientContext(SharepointUri);
clientContext.Credentials = new SharePointOnlineCredentials(SharepointUserName, GetSecureString(SharepointPassword));
var file = clientContext.Web.GetFileById(location);
clientContext.ExecuteQuery();
Console.WriteLine(file.Name);
return true;
但它不起作用:
Microsoft.SharePoint.Client.PropertyOrFieldNotInitializedException: The property or field 'Name' has not been initialized. It has not been requested or the request has not been executed. It may need to be explicitly requested.
老实说,我不知道我在这里做什么,因为真的很难告诉我各种 Id 的含义(DocId、WorkId、UniqueId,仅举三个...)。
有更多 Sharepoint 经验的人可以告诉我这里的路吗?
最佳答案
错误:
Microsoft.SharePoint.Client.PropertyOrFieldNotInitializedException: The property or field 'Name' has not been initialized. It has not been requested or the request has not been executed. It may need to be explicitly requested.
告诉客户端对象(文件
)还没有被请求。为了请求客户端对象,ClientRuntimeContext.Load和 ClientRuntimeContext.LoadQuery方法的目的。
示例
//1. Retrieve File
var file = ctx.Web.GetFileById(id);
ctx.Load(file);
ctx.ExecuteQuery();
//2.Explicitly specify what properties (e.g. `Name`) to retrieve
var file = ctx.Web.GetFileById(id);
ctx.Load(file, f=>f.Name);
ctx.ExecuteQuery();
另一方面,由于 SharePoint 搜索查询 API 跨网站集返回结果,您需要考虑为 ClientContext
指定正确的 url 以便检索 File
,对于示例:
using (var ctx = GetContext(webUri, userName, password))
{
var keywordQuery = new KeywordQuery(ctx) {QueryText = queryText};
var searchExecutor = new SearchExecutor(ctx);
var resultTables = searchExecutor.ExecuteQuery(keywordQuery);
ctx.ExecuteQuery();
foreach (var resultRow in resultTables.Value[0].ResultRows)
{
var itemWebUri = new Uri((string)resultRow["SPWebUrl"]); //<- get web url of item
var itemId = Guid.Parse((string)resultRow["UniqueId"]);
using (var curCtx = GetContext(itemWebUri, userName, password))
{
var file = curCtx.Web.GetFileById(itemId);
curCtx.Load(file, f => f.Name);
curCtx.ExecuteQuery();
Console.WriteLine(file.Name);
}
}
}
在哪里
public static ClientContext GetContext(Uri webUri, string userName, string password)
{
var securePassword = new SecureString();
foreach (var ch in password) securePassword.AppendChar(ch);
return new ClientContext(webUri) { Credentials = new SharePointOnlineCredentials(userName, securePassword) };
}
关于sharepoint - 如何通过其唯一 ID 获取 Sharepoint 上的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31637101/
我必须使用 powershell 将 csv 文件字段上传到 Sharepoint 2010 列表中。我在 Windows XP 机器上工作。 当我尝试添加 pssnapin 时 Add-PSSnap
我需要以编程方式与来自 SharePoint 外部的 SharePoint 文件夹、文件和列表进行交互。大多数教程侧重于在 SharePoint 本身内工作,或者至少在安装 SharePoint 的同
我正在将用户写入 SharePoint 列表。 我读过 SharePoint 用户字段中有一个这样的字符串:userId;#userLoginName 在写入用户字段时,我尝试以相同的方式进行格式化,
是否可以在“提供商托管应用程序”中使用 SharePoint 左侧导航栏。 SharePoint 网站“PlaceHolderLeftNavBar”上显示的导航。有没有像某些 ajax 调用或 RES
我正在编写一个使用客户端对象模型访问 SharePoint 站点的应用程序,并且我在代理服务器后面。 我打电话... ClientContext.ExecuteQuery() 并收到以下错误消息...
我在远程计算机上有一个 SharePoint 2013 服务器。 我安装了这个:https://www.microsoft.com/en-us/download/details.aspx?id=355
我对强大的应用程序还很陌生,并试图为我的以下场景确定最佳行动方案。我想根据每个新的月度文件确定哪些用户提交了列表 A,哪些用户没有提交。 我在我创建的 Sharepoint 上有一个列表(列表 A),
我有两个共享点列表。 List1 - 这包含所有用户并且主键为 UserIdList2 - 这包含所有类(class),主键为 CourseId 现在我想定义第三个列表,它将其主键作为复合键。List
sharepoint 公告列表中的过期项目会怎样?我可以得到所有项目包括过期项目吗? 最佳答案 它们本身没有任何变化 - 它们只是使用带过滤器的 View 从显示中过滤掉。 这是使用的过滤器:- 你可
我有一个由其他人编程的页面布局 PeopleSearchResults.aspx。 它包含以下标签 SharePoint refine people search results control .
嗨,我想知道我可以使用哪种布局来获取右上角的搜索框。我使用(欢迎页面)空白Web部件页面)作为页面布局,但是它缺少右上角的搜索框。 还有另一个问题:如何在“创建页面”页面的列表中添加自己的布局。谢谢。
我正在拼命寻找一种工具,允许我将旧版本的文档从 SharePoint 2003 复制到 SharePoint 2007 站点。 你知道有什么简单的(最好是免费的)工具可以做到这一点吗? 最佳答案 这对
我可以在现成的SharePoint Web部件(RSS Viewer和Data View Web部件)中使用几个不同的.NET XSLT函数。 ... More...
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我需要使用默认共享点过滤器 Web 部件传递的值。我看不到自定义共享点 Web 部件如何建立连接并获取数据。这可能吗? 已更新 提供者 WebPart 是默认的 SharePoint 列表过滤器 We
有一个关于同一主题的类似问题,但我正在添加这个问题并且之前的讨论已经解决。 这是原始问题的链接:Auto number column in SharePoint list 我现在试图找出在 MOSS
我们正在开发一个使用集成身份验证的 Intranet 门户,但站点的一些部分将暴露给不在域中的用户。对于这些用户,我们计划使用匿名访问。但是,我们整个应用程序的显示逻辑是基于登录到门户的用户,因此我们
市场上是否有任何工具可以有效分析 SharePoint 列表中的数据?我有一个客户希望分析和报告存储在 SharePoint 中的员工绩效数据。 最佳答案 Does SSRS give you any
我使用以下方法将文档上传到 sharepoint 文档库。 但是,在执行查询时 - 收到以下错误: 消息 = “远程服务器返回错误:(400) 错误请求。” 文件失败超过 1mb,所以我通过 shar
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
我是一名优秀的程序员,十分优秀!