Let's have a look at how we can create a custom list by using our own list definition.There is a <ListTemplate> element which we can use to easily create our own list definition. Andrew Connel has explained this very well in this postBut this is a different approach I wanted to use with our own list definitions.After creating a list definition I didn't want to add a list instance to the solution because if we do, then it creates a list with based definition automatically when feature gets activated.I wanted to have control over creation of this list which will be based on our custom list definition. Which puzzled me..Then I found a way to achieve this by using a object model. I don't know yet If there are multiple ways to do this but this one was a perfect choice for me and worked very well.When we create a list definition then we have a feature which provisions list definition.Note that GUID used here in code is Feature Id of the feature which provisions the list definition.Also please take into consideration that there are some methods in server object model available for creating a list using list templates directly, but this was something different than list templates, so this approach was preferred because List Templates are stored in the content database while list definitions resides on the actual file system of the servertry{ SPList list = null; using (SPSite site = new SPSite("http://yoursite/")) { using (SPWeb web = site.RootWeb) { //List Will be Created Based on this ListDefinition - OOB Custom List Definition //00BFEA71-DE22-43B2-A848-C05709900100 foreach (SPList _list in web.Lists) { if (_list.Title.Equals("TestList")) { list = _list; } }
if (list == null) { web.AllowUnsafeUpdates = true; Guid listID = web.Lists.Add("TestList", //List Title "This is Test List", //List Description "Lists/TestList", //List Url "00BFEA71-DE22-43B2-A848-C05709900100", //Feature Id of List definition Provisioning Feature - CustomList Feature Id 100, //List Template Type "101"); //Document Template Type .. 101 is for None
web.Update(); web.AllowUnsafeUpdates = false; } }
} } catch (Exception ex) {
}
You need to be a premium member to use this feature. To access it, you'll have to upgrade your membership.
Become a sharper developer and jumpstart your career.
$0
$
. 00
monthly
For Basic members:
$20
For Premium members:
$45
For Elite members: