0
您好,我想編輯Project Server 2010的自定義字段,但我不知道我在哪裏做錯了。以下是代碼,
好心幫我在這方面如何實時編輯Project Server 2010的自定義字段
ProjectSoapClient projectSvc = new ProjectSoapClient();
CustomFieldsSoapClient customfieldSvc = new CustomFieldsSoapClient();
CustomFieldDataSet fieldDefs = customfieldSvc.ReadCustomFields(string.Empty, false);
Guid projectId = new Guid(projGuid);
ProjectDataSet projectDs = projectSvc.ReadProject(projectId, ListProjects.Project.DataStoreEnum.WorkingStore);
foreach (ProjectDataSet.ProjectCustomFieldsRow cfRow in projectDs.ProjectCustomFields.Rows)
{
CustomFieldDataSet.CustomFieldsRow fieldDefinition = fieldDefs.CustomFields.Single(
cfd => cfd.MD_PROP_UID == cfRow.MD_PROP_UID);
//if (cfRow.FIELD_TYPE_ENUM == 21 || cfRow.FIELD_TYPE_ENUM == 15) //if it is a choice field
//{
if (fieldDefinition.MD_PROP_NAME == "ProductCategory")
{
cfRow.TEXT_VALUE = newValue;
}
//}
}
Guid sessionUid = Guid.NewGuid();
Guid jobUid = Guid.NewGuid();
if (!IsProjectCheckedOut(projectId))
{
projectSvc.CheckOutProject(projectId, sessionUid, "Updating CF");
jobUid = Guid.NewGuid();
projectSvc.QueueUpdateProject(jobUid, sessionUid, projectDs, false);
}
jobUid = Guid.NewGuid();
projectSvc.QueuePublish(jobUid, projectId, true, SPContext.Current.Site.Url);
projectSvc.QueueCheckInProject(jobUid, projectId, true, sessionUid, "Updating CF");
有幾個潛在的問題:如果簽出項目 - 你不叫更新,您的projectDs可能是1000行以上的模式,更新將會失敗,等等。你能分享到底「究竟會出錯」嗎?一些錯誤消息,至少 – melan 2013-04-11 04:39:02
我很感謝你的迴應。 我正在做的是將網格中的所有項目及其字段值(自定義和默認值)作爲SharePoint頁面上的Web部件提取。 抓取部分運行絕對好,但當我編輯上述代碼運行良好,我調試它的每一個聲明,沒有錯誤或例外,但更新後它並沒有改變項目服務器上的值:( 我我不明白我在做什麼錯誤:(任何想法? – user1901417 2013-04-11 07:34:28