【发布时间】:2021-03-28 00:02:06
【问题描述】:
我需要在 WPF 网格中列出 SharePoint 2019 域的所有用户。 我知道如何列出给定网站集的用户,但是如何列出所有用户?
例如,用户“工程师 10”不是“销售”网站集的用户,但是,我希望能够将他列出,因为它显示在 SharePoint“邀请人员”窗口中
这是我的代码
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;
}
}
}
这是我的代码的输出。你可以看到“Engineer 10”没有列出来
【问题讨论】:
标签: sharepoint csom