A colleague just asked me how to add a site column defined in the root web to a list somewhere in the site, so here is the small snippet:
private void AddSiteColumnToList(string sitePath, string listName, string columnName) { using (SPSite site = new SPSite(sitePath)) { using (SPWeb web = site.OpenWeb()) { //Since the site column is on the root web, //we need to get the root web //If it was'nt on the root web, but instead on the same site as the //list, we could have just used the "web" object using (SPWeb root = site.RootWeb) { //get the site column from the root web SPField fld = root.Fields[columnName]; //get the list from the site SPList list = web.Lists[listName]; //add the column list.Fields.Add(fld); //update the list list.Update(); } } } }
2 comments:
It is even easier than that. You can use the AvailableFields property of your SPWeb object.
Ton
Hi,
I love your blog ! Mind to exchange links ? Email me if you are interested
Cheers,
Edward
Post a Comment