J'accéder à une liste SharePoint comme ceci:SharePoint List => DataTable avec les noms de titre
#region Accessing share point
Microsoft.SharePoint.Client.ClientContext cC = new Microsoft.SharePoint.Client.ClientContext(Link);
cC.Credentials = System.Net.CredentialCache.DefaultCredentials;
Microsoft.SharePoint.Client.List SPList = cC.Web.Lists.GetByTitle(ListName);
cC.Load(SPList.Fields);
Microsoft.SharePoint.Client.FieldCollection Fields = SPList.Fields;
#endregion
Looping les champs, j'ai toutes les informations nom pour les différents domaines. Je peux le faire comme ceci:
int i = 0;
foreach(Microsoft.SharePoint.Client.Field FL in Fields)
{
WriteLine("Index: " + i++ + "; Internal name: " + FL.InternalName + "; Static name: " + FL.StaticName + "; Title: " + FL.Title);
}
L'exportation ressemble à ceci:
Index 5; Nom interne: Lieferant_x0020__x0028_Nummer_x0; Nom statique: Lieferant_x0020__x0028_Nummer_x0; Titre: Lieferant (Nummer)
Comme vous pouvez le voir, sharepoint stocke le nom interne en utilisant unicode pour les caractères supplémentaires. Seulement dans "FL.Title" le nom est stocké comme l'utilisateur peut le voir sur la liste des points de partage.
Maintenant, je veux mettre ces données dans un DataTable et le filtrer. Je peux le faire comme ceci:
Microsoft.SharePoint.Client.CamlQuery cQuery = new Microsoft.SharePoint.Client.CamlQuery();
cQuery = Microsoft.SharePoint.Client.CamlQuery.CreateAllItemsQuery();
Microsoft.SharePoint.Client.ListItemCollection LIC = SPList.GetItems(cQuery);
cC.Load(LIC);
cC.ExecuteQuery();
dt = new DataTable();
#region Create columns
foreach (var Field in LIC[0].FieldValues)
{
dt.Columns.Add(Field.Key);
}
#endregion
#region Reading data
foreach (Microsoft.SharePoint.Client.ListItem It in LIC)
{
System.Data.DataRow row = dt.NewRow();
foreach(var Field in It.FieldValues)
{
row[Field.Key] = Field.Value;
}
dt.Rows.Add(row);
}
#endregion
le problème est que dans le ListItemCollection, seul le InternalName avec des caractères supplémentaires comme Unicode sont disponibles. Je ne peux pas non plus l'encoder car SharePoint 2010 ne comporte que 32 caractères pour les noms internes menant à des noms de découpage qui ne sont plus complets.
Est-il possible d'obtenir le titre à partir des colonnes List dans le KeyValuePair
du ListItem.FieldValues
? En fait, les KeyValuePairs
sont construits comme ceci:
<br>
It.FieldValues.Key = //Column as Internal Name
It.FieldValues.Value = //Value
J'ai besoin:
It.FieldValues.Key = //Column as Title
It.FieldValues.Value = //Value
Merci à l'avance, Jan
Non, cela provoque une erreur. Aucune méthode n'est autorisée après (cQuery). – CJens