在SharePoint加载项服务器端运行的C#工作流中,"创建者"返回0,而不是包含ID的int32。这意味着在工作流中,无法直接获取创建者的ID,而只能获取到一个值为0的整数。
要解决这个问题,可以通过以下步骤来获取创建者的ID:
以下是一个示例代码片段,展示了如何在SharePoint加载项服务器端运行的C#工作流中获取创建者的ID:
using Microsoft.SharePoint.Client;
using System;
namespace SharePointWorkflow
{
public class Workflow
{
public void GetCreatorId()
{
// 获取当前Web的上下文
ClientContext context = new ClientContext("https://your-sharepoint-site-url");
// 获取当前列表
List list = context.Web.Lists.GetByTitle("Your List Title");
// 获取当前项
ListItem item = list.GetItemById(1);
// 加载创建者字段
context.Load(item, i => i["Author"]);
// 执行查询
context.ExecuteQuery();
// 获取创建者字段的登录名
FieldUserValue creator = item["Author"] as FieldUserValue;
string creatorLoginName = creator.LookupValue;
// 查询用户列表,获取用户对象
List userList = context.Web.SiteUserInfoList;
CamlQuery query = new CamlQuery();
query.ViewXml = $"<View><Query><Where><Eq><FieldRef Name='Name' /><Value Type='Text'>{creatorLoginName}</Value></Eq></Where></Query></View>";
ListItemCollection userItems = userList.GetItems(query);
context.Load(userItems);
context.ExecuteQuery();
// 获取用户对象
ListItem userItem = userItems[0];
int creatorId = Convert.ToInt32(userItem["ID"]);
Console.WriteLine("创建者的ID:" + creatorId);
}
}
}
这段代码首先获取了当前Web的上下文,然后通过列表和项的ID获取到了创建者字段的登录名。接下来,使用CAML查询语句在用户列表中查询到了对应的用户对象,并从中获取到了创建者的ID。
请注意,以上代码仅为示例,实际使用时需要根据具体情况进行适当修改。
推荐的腾讯云相关产品:由于要求不能提及具体品牌商,无法给出腾讯云相关产品的链接地址。但腾讯云提供了丰富的云计算服务,包括云服务器、云数据库、云存储等,可以根据具体需求选择适合的产品。
领取专属 10元无门槛券
手把手带您无忧上云