Skip to main content

How to create a custom field type in SharePoint 2010 using visual studio 2010?



There are default field types like Text, Note, Boolean, Integer, Number, Decimal, DateTime, Choice, Lookup etc. We can also make our custom field types by using visual studio 2010.
Why Necessary?

For initialization and format field values.
Also used for data validation on user inputs.
Some points to remember:

Field types cannot be deployed in sandbox solution.
Might cause problem with Microsoft office products.
Might cause problem while viewing list items through data grid ir whenever trying to program against list using LINQ.

The structure should look like the below figure:



Steps to create custom field types:
1.     First create a new SharePoint project using the Empty SharePoint project template.

2.   Inside the project you need to add a public class for each custom field type.
3.     You need to add a special xml file namely fldtypes_{project name}.xml, to deploy the field type.
For each custom field type, you must create a field type class that inherits from one of the built-in field type classes, such as SPFieldText, SPFieldNumber, SPFieldDateTime, and SPFieldMultiColumn.
Then you required to add two public constructor. Here you don’t need to add any code within that constructor, only need to define the parameter list and pass these parameters on to the base class constructor with a matching parameter list. The code is below.
public class EmployeeStartDate : SPFieldDateTime
    {

        public EmployeeStartDate(SPFieldCollection fields, string fieldName)
            : base(fields, fieldName) { }

        public EmployeeStartDate(SPFieldCollection fields, string typeName, string displayName)
            : base(fields, typeName, displayName) { }


        // configure field to display date but not time
        public override void OnAdded(SPAddFieldOptions op)
        {
            this.DisplayFormat = SPDateTimeFieldFormatType.DateOnly;
            this.Update();
        }
}
The next step is to override whatever base class methods and properties make sense for your particular scenario. Here is the code sample that I have done here:
// add logic to create default date as first Monday
        public override string DefaultValue
        {
            get
            {
                DateTime startDate = DateTime.Today;
                while (startDate.DayOfWeek != DayOfWeek.Monday)
                {
                    startDate = startDate.AddDays(1);
                }
                return SPUtility.CreateISO8601DateTimeFromSystemDateTime(startDate);
            }
        }

        // add validation to ensure start date is a Monday
        public override string GetValidatedString(object value)
        {
            DateTime input = System.Convert.ToDateTime(value);
            if (input.DayOfWeek != DayOfWeek.Monday)
            {
                throw new SPFieldValidationException("Employee start date must be a monday");
            }
            return base.GetValidatedString(value);
        }

Here we have completed the creation of the custom field type and now we need to deploy.
Deployment:

For this we need to create a XML file. The naming convention is very much important, it must start with fldtypes then _  and then the project name.xml. For example fldtypes_FieldTypeDemo.xml.
Within that XML file each field type is created using a FieldType element, which must reside inside top-level FieldTypes element. The Field elements are required to provide information about the custom field type, its parent type, its display name, the field class name, the name of the assembly etc. Below is the code sample.



  
    EmployeeStartDate
    DateTime
    Employee Start Date
    Employee Start Date (demo)
    TRUE
    
      FieldTypeDemo.EmployeeStartDate,FieldTypeDemo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2a494da19a21cf85
    
  



TypeName and FieldTypeClass name are very much important.
Now deploy the solution and enjoy.

Popular posts from this blog

Migrating from Skype for Business to Microsoft Teams: A Step-by-Step Guide

Do you still use Skype for Business to meet the communication and collaboration needs of your business? If so, now is the perfect time to think about switching to Microsoft Teams, a cutting-edge platform with cutting-edge capabilities and seamless connectivity with other Microsoft services. But if you're unfamiliar with the procedure, switching to a new platform can seem like a difficult task. I'll walk you through the process of switching from Skype for Business to Microsoft Teams in this article. Plan the migration in Step 1 You must make a plan before you start the relocation procedure. Set a deadline, make a list of all the Skype for Business capabilities you presently use, and choose whether to migrate gradually or all at once. Step 2: Set up your surroundings. Make sure your network and infrastructure fulfil Microsoft Teams' standards. Upgrades to your hardware, software, and licences might be necessary. Additionally, confirm that you have the right permissions to ca

How to: Debug SharePoint Applications

You can greatly simplify debugging by using Visual Studio extensions for Windows SharePoint Services. This topic includes procedures that explain the following: Debugging with Visual Studio extensions for Windows SharePoint Services Performing manual debugging Performing remote debugging Debugging with Visual Studio extensions for Windows SharePoint Services Press the F5 key to begin debugging with Visual Studio extensions for Windows SharePoint Services. The following procedure demonstrates how to enable F5 debugging. To enable F5 debugging Locate and open the target SharePoint application's Web.config file. By default, it is located in C:\Inetpub\wwwroot\wss\VirtualDirectories\80. Find the following line of code and change the  debug  attribute to  true . Save the changes to the Web.config file. In Visual Studio, right-click the SharePoint project, and then click  Properties . Click the  Debug  tab, and then type the target SharePoint URL in t

SharePoint 2010 – How to use Audio and Video Webpart

Video and Audio Web Part [ a.k.a Media Web Part ] is one of the new cool web parts in SharePoint 2010, so in this article I am going to show you the way to add this web part in your page. To add Media web part to the page you must activate those two features 1- SharePoint Server Publishing Infrastructure Feature in Site Collection features 2- SharePoint Server Publishing Feature in Site features After that edit page then click on Insert tab in SharePoint Ribbon then select Video and Audio Now the Media Web Part in the page Click on the Media Web Part and you will find Options Tab in the Ribbon As you can see in the Options tab there are Chang Media button allow you to select the video and Chang Image button to change the image of web part and Styles (Dark, Light) Click on Change Media to select the Media file. From Computer opens up the Upload media so you can upload the video and display it. Once you click ok and saving the page. Click on play button and enj