微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Sharepoint 客户端 - 列出所有用户

如何解决Sharepoint 客户端 - 列出所有用户

我需要在 WPF 网格中列出 SharePoint 2019 域的所有用户。 我知道如何列出给定网站集的用户,但如何列出所有用户

例如,用户“工程师 10”不是“销售”网站集的用户,但是,我希望能够列出他在 SharePoint“邀请人员”窗口中显示内容

Shaorepoint "invite People" window

这是我的代码

XAML

<Window xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp7"
        xmlns:System="clr-namespace:System;assembly=mscorlib"  x:Class="MainWindow"
        mc:Ignorable="d"
        Title="MainWindow" Height="800" Width="250" WindowStartupLocation="CenterScreen" WindowStyle="ToolWindow">
    <Grid>
        <DataGrid x:Name="Grid" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn x:Name="COL_ID" Header="ID"  Width="*"   Binding="{Binding [0]}"/>
                <DataGridTextColumn x:Name="COL_NAME" Header="USER"  Width="*"   Binding="{Binding [1]}"/>
                <DataGridTextColumn x:Name="COL_EMAIL" Header="E-mail"  Width="*"   Binding="{Binding [2]}"/>
            </DataGrid.Columns>
        </DataGrid>
        
    </Grid>
</Window> 

C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualBasic;
using SP = Microsoft.SharePoint.Client;

class MainWindow
{
    public void LoadGrid()
    {
        List<object[]> Userlist = new List<object[]>();
        Userlist.Clear();
        Grid.ItemsSource = null;
        Grid.Items.Clear();
        SP.ClientContext ClientContext = new SP.ClientContext("http://dc/Sites/Sales/");
        SP.Web Website = ClientContext.Web;
        SP.UserCollection Users = ClientContext.Site.RootWeb.SiteUsers;
        SP.Web root = ClientContext.Site.RootWeb;
        ClientContext.Load(root);
        ClientContext.Load(Users);
        ClientContext.ExecuteQuery();
        foreach (var us in Users)
        {
            ClientContext.Load(us);
            ClientContext.ExecuteQuery();
            Userlist.Add(new User(us.Id,us.Title,us.Email).Fields);
        }
        Grid.ItemsSource = Userlist;
        ClientContext.dispose();
    }

    private void MainWindow_Loaded(object sender,RoutedEventArgs e)
    {
        LoadGrid();
    }
}

public class User
{
    public User(idin,namein,Emailin)
    {
        Values(0) = idin;
        Values(1) = namein;
        Values(2) = Emailin;
    }
    public object[] Fields = new object[4];

    public object Values
    {
        get
        {
            return Fields[test_number];
        }
        set
        {
            Fields[test_number] = Value;
        }
    }
}

这是我的代码输出。您可以看到“工程师 10”未列出

WPF Window

解决方法

在您的代码中,您从网站集中获取用户。如果用户未添加到网站集中,则无法检索它们。

实际上,用户来自AD。如果您配置了用户配置文件服务,则用户信息将存储在 UPS 中。因此,您可以尝试从 UPS 获取所有用户。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。