客户端模型取List中PeopleorGroup中的LoginName

前几个月做的一个项目需要根据Item中Approver字段的人员来判断权限。

我的思路是通过Infopath自带函数UserName()来检查用户是否Approver,奈何Approver是多选People,而infopath中判断用的Approve.AccountID只能取到第一个。

于是想通过客户端模型查看一下这个Approver的People字段到底存储的是什么信息。

测试用的list为下图:


于是通过var users= item["Approver"];发现这个字段是个FieldUserValue类型的数组。

修改代码为FieldUserValue []users= item["Approver"] as FieldUserValue[];

然后问题又来了 FieldUserValue可用的属性只有Lookupid (一个数字)和Lookupvalue(DisplayName)

我就琢磨着能不能转换成User来取得LoginName,好的搜索一下SPFieldUserValue转换SPUser

代码倒是一大堆,谁告诉我FieldUserValue哪来的User属性了=-=

但是倒是提醒我了,能不能先转换成FieldUser,直接as试试看= =好吧,失败了。

!!!好吧,那我新建一个用户总行了吧,开UserCreationInformation,好吧没有loginname我注定还是失败。

最后看到这个http://www.cnblogs.com/McJeremy/archive/2009/08/03/1537876.html

既然它group通过lookupid能取到,那么我试试user能不能呢?结果竟然成功了!!最后贴上代码

        [WebMethod]
        public List<string> Test()
        {
            //通过用户名和网址返回该用户在该网站下组的名集合

            List<string> Usernames = new List<string>();
            ClientContext clientContext = new ClientContext("http://w01sps0104/");
            string user = System.Configuration.ConfigurationManager.AppSettings["AgengcyUser"].ToString();
            string pwd = System.Configuration.ConfigurationManager.AppSettings["AgengcyPwd"].ToString();
            clientContext.Credentials = new NetworkCredential(user, pwd); //代理登陆身份
            Web site = clientContext.Web;
            List ListGoal = site.Lists.GetByTitle("Test");
            ListItem item = ListGoal.GetItemById("1");
            clientContext.Load(item);
            clientContext.ExecuteQuery();
            FieldUserValue []users= item["Approver"] as FieldUserValue[];
            Microsoft.SharePoint.Client.UserCollection Users = site.SiteUsers;
            for (int i = 0; i < users.Length; i++)
            {
                Microsoft.SharePoint.Client.User userx = Users.GetById(users[i].LookupId);
                clientContext.Load(userx);
                clientContext.ExecuteQuery();
                string mail = userx.LoginName;
                Usernames.Add(mail);
            }
            return Usernames;
        }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值