public void CreateTask(int newID)
{
if (newID != 0)
{
using (SPWeb spWeb = new SPSite(pmUrl).OpenWeb())
{
spWeb.AllowUnsafeUpdates = true;
SPListTemplate CustomTemplate = null;
SPListTemplateCollection ListTemplateCollection = spWeb.Site.GetCustomListTemplates(spWeb);
foreach (SPListTemplate template in ListTemplateCollection)
{
if (template.InternalName == "customTempList.stp")
{
CustomTemplate = template;
break;
}
}
SPList departList = spWeb.Lists["Department"];
//创建新列表
Guid newListGuid = spWeb.Lists.Add(newID.ToString(), "", CustomTemplate);
SPList newList = spWeb.Lists[newListGuid];
using (SPWeb tempWeb = new SPSite(tempUrl).OpenWeb())
{
SPList spList = tempWeb.Lists[drtList.SelectedItem.Value.ToString()];
SPFieldCollection spFieldColl = spList.Fields;
foreach (SPField spField in spFieldColl)
{
if (spField.FromBaseType == false)
{
string strStaticName = spField.StaticName;
if (spField.Type == SPFieldType.Lookup)
{
Guid lookupGuid = new Guid(departList.ID.ToString()); //取得这个Lookup数据源List的Guid
newList.Fields.AddLookup(strStaticName, lookupGuid, false);
SPFieldLookup splookup = newList.Fields[strStaticName] as SPFieldLookup; //绑定数据List到Lookup字段
splookup.LookupField = departList.Fields["标题"].StaticName;
splookup.AllowMultipleValues = true;
splookup.Update();
}
else if (spField.Type == SPFieldType.User)
{
newList.Fields.Add(strStaticName, spField.Type, false);
SPFieldUser spFieldUser = newList.Fields[strStaticName] as SPFieldUser;
spFieldUser.AllowMultipleValues = true; //允许多个值
spFieldUser.Update();
}
else if (spField.Type == SPFieldType.Choice)
{
newList.Fields.Add(strStaticName, spField.Type, false);
SPFieldChoice spFieldChoice = newList.Fields[strStaticName] as SPFieldChoice;
SPFieldChoice tempFieldChoice = spField as SPFieldChoice;
foreach (string choice in tempFieldChoice.Choices)
{
spFieldChoice.AddChoice(choice);
}
spFieldChoice.Update();
}
else
{
newList.Fields.Add(strStaticName, spField.Type, false);
}
}
}
newList.Fields.Add("Version", SPFieldType.Number, false);
newList.Fields.Add("VersionState", SPFieldType.Choice, false);
SPFieldChoice VersionStateChoice = newList.Fields["VersionState"] as SPFieldChoice;
VersionStateChoice.AddChoice("草稿");
VersionStateChoice.AddChoice("发布");
VersionStateChoice.Update();
//---------------------------------
newList.Fields.Add("SubmitState", SPFieldType.Choice, false);
SPFieldChoice SubmitStateChoice = newList.Fields["SubmitState"] as SPFieldChoice;
SubmitStateChoice.AddChoice("待提交");
SubmitStateChoice.AddChoice("已提交");
SubmitStateChoice.DefaultValue = "待提交";
SubmitStateChoice.Update();
//----------------------------------
newList.Fields.Add("YesNoEdit", SPFieldType.Boolean, false);
SPFieldBoolean YesNoEdit = newList.Fields["YesNoEdit"] as SPFieldBoolean;
YesNoEdit.DefaultValue = "0";
YesNoEdit.Update();
newList.Fields.Add("Schedule", SPFieldType.Number, false);
newList.Fields.Add("ApprovalStatus", SPFieldType.Boolean, false);
SPFieldBoolean ApprovalStatus = newList.Fields["ApprovalStatus"] as SPFieldBoolean;
ApprovalStatus.DefaultValue = "0";
ApprovalStatus.Update();
newList.Fields.Add("ImportantNode", SPFieldType.Boolean, false);
SPFieldBoolean ImportantNode = newList.Fields["ImportantNode"] as SPFieldBoolean;
ImportantNode.DefaultValue = "0";
ImportantNode.Update();
newList.Fields.Add("ShowHome", SPFieldType.Boolean, false);
SPFieldBoolean ShowHome = newList.Fields["ShowHome"] as SPFieldBoolean;
ShowHome.DefaultValue = "0";
ShowHome.Update();
//--任务负责人、项目ID、项目名称、项目类型
newList.Fields.Add("AssignedTotm", SPFieldType.Text, false);
newList.Fields.Add("ProjectId", SPFieldType.Number, false);
newList.Fields.Add("ProjectName", SPFieldType.Text, false);
newList.Fields.Add("Type", SPFieldType.Number, false);
//--
//--关联ID
newList.Fields.Add("OldVerssionID", SPFieldType.Number, false);
//--
newList.Update();
SPList sptempList = tempWeb.Lists[drtList.SelectedItem.Value.ToString()];
SPQuery spQuery = new SPQuery();
spQuery.Query = @"<OrderBy>
<FieldRef Name='OrderID' />
</OrderBy>";
SPListItemCollection sptempColl = sptempList.GetItems(spQuery);
//SPListItemCollection sptempColl = sptempList.Items;
SPFieldCollection newFields = spList.Fields;
foreach (SPListItem itemtemp in sptempColl)
{
SPListItem newItem = newList.AddItem();
foreach (SPField spField in newFields)
{
if (spField.FromBaseType == false)
{
string strStaticName = spField.StaticName;
newItem[strStaticName] = itemtemp[strStaticName];
}
}
newItem["Status"] = "进行中";
newItem["YesNoEdit"] = false;
newItem["ApprovalStatus"] = false;
newItem["ApprovalStatus"] = false;
newItem["ShowHome"] = false;
newItem["Version"] = 0;
newItem["VersionState"] = "草稿";
newItem.Update();
if (Convert.ToInt32(newItem["PID"]) != 0)
{
int orderid = 0;
foreach (SPListItem item1 in sptempColl)
{
if (Convert.ToInt32(item1["ID"]) == Convert.ToInt32(newItem["PID"]))
{
orderid = Convert.ToInt32(item1["OrderID"]);
break;
}
}
string pid = "";
SPListItemCollection itemColl2 = newList.GetItems();
foreach (SPListItem item1 in itemColl2)
{
if (Convert.ToInt32(item1["OrderID"]) == orderid)
{
pid = item1["ID"].ToString();
break;
}
}
newItem["PID"] = pid;
spWeb.AllowUnsafeUpdates = true;
newItem.Update();
}
else
{
newItem["ImportantNode"] = true;
newItem.Update();
}
}
}
}
}
}