Si vous êtes comme moi (comprenez, si vous êtes aussi fainéant que moi), vous n'aimez pas les tâches répétitives comme créer des listes, rajouter des colonnes, configurer les vues, ajouter des éléments à une liste (surtout si il s'agit de rajouter 3000 éléments à la liste en question), etc...
Votre premier réflèxe est d'essayer d'automatiser tout ça. Pour cela vous avez plusieurs possibilités : Manipuler le modèle objet SharePoint ou le faire via l'interface SharePoint...
Ce qui m'intéresse ici est d'utiliser le modèle objet pour automatiser la création d'une liste, rajouter des colonnes et modifier la vue principale.
Regardons comment faire :
//Creation de la liste
Guid id = web.Lists.Add("RandomData", "", SPListTemplateType.GenericList);
list = web.Lists.GetList(id, false);
//Ajout de Fields
list.Fields.Add("DateTime", SPFieldType.DateTime, true);
list.Fields.Add("Choice", SPFieldType.Choice, true);
SPFieldDateTime dateTimeField = (SPFieldDateTime)list.Fields.GetField("DateTime");
//Configuration de Field Choice
SPFieldChoice choiceField = (SPFieldChoice)list.Fields.GetField("Choice");
choiceField.DefaultValue = "true";
choiceField.EditFormat = SPChoiceFormatType.Dropdown;
string[] choices = new string[2] { "true", "false" };
foreach (string choice in choices)
{
choiceField.Choices.Add(choice);
}
choiceField.Update();
//Modification de la Vue pour afficher les nouvelles collonnes
SPView spView = list.DefaultView;
if (!spView.ViewFields.Exists("Choice") && !spView.ViewFields.Exists("DateTime"))
{
spView.ViewFields.Add(choiceField);
spView.ViewFields.Add(dateTimeField);
}
//Cette ligne n'est pas nécessaire mais je voulais montrer les problèmes d'affichage
//lié aux listes contenant un grand nombre d'éléments, ici nbItemToCreate vaut 3000
spView.RowLimit = nbItemToCreate;
spView.Update();
//On affiche la liste sur le menu
list.OnQuickLaunch = true;
list.Update();
Ce qui vous donnera :
<Philippe/>