Je l'ai réussi à l'ajouter à une liste spécifiée, mais je souhaite parcourir toutes les listes de la collection de sites. Je ne peux pas trouver ce qui fait que cela ne fonctionne pas.Sharepoint ajouter un champ à toutes les listes/bibliothèques de documents dans une collection de sites
code qui fonctionne pour une liste:
void btnAdd_Click(object sender, EventArgs e)
{
try
{
using (SPSite site = new SPSite("http://asdf:150/sites/test"))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["test8"];
//Needed?
site.AllowUnsafeUpdates = true;
web.AllowUnsafeUpdates = true;
string mainLocation = list.Fields.Add("New Field", SPFieldType.Text, false, false, null);
readOnly(list, mainLocation);
//Add to default view (will be removed after testing)
SPView view = list.DefaultView;
defaultView(view, "New Field");
}
}
}
catch (Exception ex)
{
}
}
Je veux ajouter le champ à toutes les listes de la collection de sites, mais je ne sais pas ce que je pourrais faire mal, c'est ce que j'ai à ce jour .
void btnAdd_Click(object sender, EventArgs e)
{
using (SPSite site = new SPSite("http://asdf:150/sites/test"))
{
using (SPWeb web = site.OpenWeb())
{
//Needed?
site.AllowUnsafeUpdates = true;
web.AllowUnsafeUpdates = true;
try
{
SPListCollection lists = web.Lists; // ??
foreach (SPList list in lists)
{
string mainLocation = list.Fields.Add("New Field", SPFieldType.Text, false, false, null);
readOnly(list, mainLocation);
//Add to default view (will be removed after testing)
SPView view = list.DefaultView;
defaultView(view, "New Field");
}
}
catch (Exception)
{
// some exception handling
}
finally
{
//web.Dispose();
}
}
}
}
Méthodes d'aide
void readOnly(SPList list, string name)
{
SPField listField = list.Fields.GetFieldByInternalName(name);
listField.ReadOnlyField = true;
listField.Update();
}
void defaultView(SPView view, string field)
{
view.ViewFields.Add(field);
view.Update();
}
Hope toute une d'entre vous sont plus intelligents que moi ici :)
Alors qu'est-ce qui ne va pas? Avez-vous une exception? –