I've only found this problem in SharePoint 2010. When creating site columns
through a feature, the site column type User can generate Datasheet view errors
later on, if you forget to add the property Type="User" in the
field description:
<Field ID="{cfede2eb-9f3b-4a6b-8bce-9880d2ea34fc}"
SourceID="http://schemas.microsoft.com/sharepoint/v3"
Name="FieldUserName"
StaticName="FieldUserName"
DisplayName="FieldUserName"
Group="Field group"
BaseType="Text" />
You should have done it like this:
<Field ID="{cfede2eb-9f3b-4a6b-8bce-9880d2ea34fc}"
SourceID="http://schemas.microsoft.com/sharepoint/v3"
Name="FieldUserName" StaticName="FieldUserName" DisplayName="FieldUserName" Group="Field
group" BaseType="Text" Type="User"
/>
But now that you have deployed it live, the best way so data is not lost, is
to correct this programmatically with a script:
static void Main(string[] args) {
string url = args[0];
SPSite site = new SPSite(url);
SPWeb web = site.OpenWeb();
List<SPField> fieldsList = new List<SPField>();
fieldsList.Add( web.Fields[new Guid("{cfede2eb-9f3b-4a6b-8bce-9880d2ea34fc}")] );
//you can add other User
type fields where you have forgotten it.
foreach (SPField field in fieldsList) {
Console.Out.WriteLine("Initial value: " + field.SchemaXml);
if (!field.SchemaXml.Contains("List="))
{
field.SchemaXml = field.SchemaXml.Replace("<Field", "<Field List=\"UserInfo\" ");
field.PushChangesToLists = true;
field.Update();
}
}
Good luck!
No comments:
Post a Comment