首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

作为SharePoint加载项服务器端运行的C#工作流中的“创建者”返回0,而不是包含ID的int32

在SharePoint加载项服务器端运行的C#工作流中,"创建者"返回0,而不是包含ID的int32。这意味着在工作流中,无法直接获取创建者的ID,而只能获取到一个值为0的整数。

要解决这个问题,可以通过以下步骤来获取创建者的ID:

  1. 使用工作流中的"创建者"属性获取创建者的登录名。
  2. 使用SharePoint的客户端对象模型(CSOM)或服务器对象模型(SSOM)查询用户列表,根据登录名获取用户对象。
  3. 从用户对象中获取用户的ID属性,即可获得创建者的ID。

以下是一个示例代码片段,展示了如何在SharePoint加载项服务器端运行的C#工作流中获取创建者的ID:

代码语言:txt
复制
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。

请注意,以上代码仅为示例,实际使用时需要根据具体情况进行适当修改。

推荐的腾讯云相关产品:由于要求不能提及具体品牌商,无法给出腾讯云相关产品的链接地址。但腾讯云提供了丰富的云计算服务,包括云服务器、云数据库、云存储等,可以根据具体需求选择适合的产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券