【问题标题】:How to Edit Custom Fields of Project Server 2010 Pragmatically如何务实地编辑 Project Server 2010 的自定义字段
【发布时间】:2013-04-10 11:35:19
【问题描述】:

您好,我想实用地编辑 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 行,更新会失败,等等。你能分享一下究竟是什么“是出错”?一些错误信息,至少是一些东西
  • 感谢您的回复。我正在做的是获取网格中的所有项目及其字段值(自定义和默认)作为 SharePoint 页面上的 Web 部件。获取部分运行得非常好但是当我编辑上面的代码运行正常时,我调试它的每一个语句,它没有错误或异常,但更新后它没有改变项目服务器上的值:(我不是了解我做错了什么:(。有什么想法吗??

标签: sharepoint sharepoint-2010 project-server ms-project-server-2010


【解决方案1】:

可能是因为您先发布了项目。它也只适用于 QueueCheckInProject 函数。

另一个原因可能是,您正在通过迭代搜索的行尚不可用,您必须先将其添加到您的项目数据集中!

并且您应该等待完成结帐、更新和签入!

查看我的博客文章了解更多详情: http://www.geeklife.ch/dev/update-project-server-2010-customfields-over-psi/

或者我在这个帖子中的回答: Setting custom fields using the PSI - Microsoft Project Server

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 2018-09-01
    相关资源
    最近更新 更多