Skip to main content

Creating SharePoint 2010 Calculated Field from code in sites with different regional settings

Say you need to create the following calculated column in different sites that have different regional settings: English, French, etc. to format the DateTime [Start Time] filed to "dd-mm-yyyy".

The following formula would look list this in English - with a comma separator:
=TEXT([Start Time],"dd-mm-yyyy")
Like this in french - with a semicolon separator:
=TEXT([Start Time];"dd-mm-yyyy")
When creating the column from from code  behind to treat this  the SPWeb.Locale.TextInfo.ListSeparator property must be used to get the correct list separator:
SPList spList = SPContext.Current.Web.Lists["List Title"];
string newFieldName = spList.Add("CalculatedField", SPFieldType.Calculated, false);
SPFieldCalculated newField = (SPFieldCalculated)spList.GetField(newFieldName);
newField.Formula = String.Format(@"=TEXT([Start Time]{0} ""dd-mm-yyyy"")", SPContext.Current.Web.Locale.TextInfo.ListSeparator);
newField.Update();

Comments

Popular posts from this blog

SharePoint 2010 retrieving lookup values using ECMAScript

Script to retrieve single and multiple value lookup fields values using SharePoint 2010 Client Object Model for JavaScript (ECMAScript): var listName = "list name here" ; var listItemId = 23 ; // id here function retrieveLookupValues () { var clientContext = new SP . ClientContext . get_current (); var oList = clientContext . get_web (). get_lists (). getByTitle ( listName ); var selectedItems = SP . ListOperation . Selection . getSelectedItems (); var camlQuery = new SP . CamlQuery (); camlQuery . set_viewXml ( "< View >< Query >< Where >< Eq >< FieldRef Name='ID' / >< Value Type='Counter'>" + listItemId + "< /Value>< /Eq>< /Where>< /Query>< RowLimit>100< /RowLimit>< /View>" ); this . collListItem = oList . getItems ( camlQuery ); clientContext . load ( collListItem , 'Include(CustomSingelLookup...

PowerShell script to add work email to the list fields for the author

The Author (Created By) field is actually an lookup field to the hidden User Information list. If you need to add the work email of the Author (Created By field) user to a specific list it can be done by adding a dependent lookup field for the Author field: $site = get - spsite "site url here"; $list = $site . RootWeb . Lists [ "list name" ]; $createdByEmailGuid = $web . Fields . AddDependentLookup ( "Work e-mail" , [ Microsoft . SharePoint . SPBuiltInFieldId ]:: Author ); $createdByEmail = $web . Fields . GetFieldByInternalName ( $createdByEmailGuid ); $createdByEmail . Description = "Work e-mail address of the Author."; $createdByEmail . LookupField = $web . Fields [[ Microsoft . SharePoint . SPBuiltInFieldId ]:: EMail ]. InternalName ; $createdByEmail . Update (); $web . Update (); $list . Fields . Add ( $createdByEmail ); $list . Update (); If additional fields are needed the same method can be applied. Here is a li...

SharePoint 2013 CAML Query Errors

I got this error while running a CAML Query from a SharePoint 2013 Client application: System.ArgumentException: Value does not fall within the expected range. This was happening only in the Prod environment. One thing that needs to be checked is that in Central Administration > Resource Throttling > List View Lookup Threshold is high enough for all lookup fields in your query: