I have created a list programmatically and added columns.but error comes due to column limit.Please help.Here is my code.My logic is:When an item is added to list "Future Projects" a new list shold be created.The new list name should be SP Resources Master + Year obtained from Future Projects.The list is created,but the error comes when adding columns to the new list.I have added the whole weeks of an year as columns.My code is
public override void ItemAdded(SPItemEventProperties properties)
{
base.ItemAdded(properties);
if (properties.ListTitle == "Future Projects")
{
SPWeb oSPWeb = properties.Web;
oSPWeb.AllowUnsafeUpdates = true;
DateTime dtStartDate = onvert.ToDateTime(properties.ListItem["Start Date"]);
DateTime dtEndDate=Convert.ToDateTime(properties.ListItem["End Date"]);
string startDateYear = string.Format("{0:yyyy}", dtStartDate);
string endDateYear = string.Format("{0:yyyy}", dtEndDate);
SPWeb oSPWebResources = properties.Web;
oSPWebResources.AllowUnsafeUpdates = true;
SPListCollection oSPListCollection = oSPWebResources.Lists;
//Add Title,Description and ListTemplate
string ListName = "SP Resources Master " + startDateYear;
foreach (SPList oSPList in oSPListCollection)
{
if (oSPList.Title == ListName)
{
goto finish;
}
}
if ((Convert.ToString(startDateYear) == "2012") || (Convert.ToString(endDateYear) == "2012"))
{
goto finish;
}
else
{
oSPListCollection.Add(ListName, "SP Resources Master", SPListTemplateType.GenericList);
SPList oSPListResources = oSPWeb.Lists[ListName];
SPView oSPViewResources = oSPListResources.DefaultView;
//Set Start Date and End Date
string strStartingDate = "1/1/" + startDateYear;
DateTime dtStartingDate = Convert.ToDateTime(strStartingDate);
string strEndingDate = "12/31/" + endDateYear;
DateTime dtEndingDate = Convert.ToDateTime(strEndingDate);
/* add the new fields to the list */
List oList = GetWeeksBetweenDateRange(dtStartingDate, dtEndingDate);
foreach (string str in oList)
{
SPFieldDateTime fldDateTime = (SPFieldDateTime)oSPListResources.Fields.CreateNewField(SPFieldType.DateTime.ToString(), str);
fldDateTime.DisplayFormat = SPDateTimeFieldFormatType.DateTime;
oSPListResources.Fields.Add(fldDateTime);
oSPViewResources.ViewFields.Add(str);
}
oSPListResources.Update();
oSPViewResources.Update();
oSPWeb.AllowUnsafeUpdates = false;
}
finish: ;
}
}
public List<string> GetWeeksBetweenDateRange(DateTime startDate, DateTime endDate)
{
weeks = new List<String>();
while (startDate <= endDate)
{
int currentDayOfTheWeekInNo = (int)startDate.DayOfWeek;
DateTime weekStartDate = startDate.AddDays(-currentDayOfTheWeekInNo);
DateTime weekEndDate = weekStartDate.AddDays(6);
string weekRange = weekStartDate.ToString("MMM dd yyyy") + " - " + weekEndDate.ToString("MMM dd yyyy");
weeks.Add(weekRange);
startDate = weekStartDate.AddDays(7);
}
return weeks;
}