I’ve seen the question if it is possible to enable Audience Targetting on a SharePoint document library or list trough code, but I’ve never found an answer to it. But this weekend Ryan Ramcharan posted a solution in one of the SharePoint Forums posts. It looks like you can enable Audience Targeting programatically by adding the Target Audiences field as XML, here is a small code snippet:
using (SPSite site = new SPSite(http://mysite/))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists[“Shared Documents”];
XmlElement fldElement = new XmlDocument().CreateElement(“Field”);
fldElement.SetAttribute(“ID”, “61cbb965-1e04-4273-b658-eedaa662f48d”);
fldElement.SetAttribute(“Type”, “TargetTo”);
fldElement.SetAttribute(“Name”, “TargetTo”);
fldElement.SetAttribute(“DisplayName”, “Target Audiences”);
fldElement.SetAttribute(“Required”, “FALSE”);
list.Fields.AddFieldAsXml(fldElement.OuterXml);
list.Update();
}
}
The strange thing is that this seems to only way to add the field, you can’t get a hold of the Target Audiences field through the Object Model. Thanks Ryan for posting this solution! And if you know a nicer way to accomplish this, feel free to drop a comment. 🙂