使用CSOM我可以看到如何使用SetCustomFieldValue方法来更新相关的项目自定义字段,但是它无法为项目在线内的任务,做到这一点? 我没有看到任何东西,将允许这一点,但它的文档,这应该是可能的名单。
谢谢!
使用CSOM我可以看到如何使用SetCustomFieldValue方法来更新相关的项目自定义字段,但是它无法为项目在线内的任务,做到这一点? 我没有看到任何东西,将允许这一点,但它的文档,这应该是可能的名单。
谢谢!
你看着这个线程? 使用CSOM更新项目的自定义字段
这是项目的水平,但它可以提供一些更详细的线索。 其实,还有那个帖子底部任务级代码所以希望,这就是你所需要的。
我也搜索了更新任务级别的自定义字段的方式,但无法找到一个解决方案。 对于这一点,一些其他的原因,我已经决定通过实施projectdrilldown扩展做到这一点。 这意味着可以直接在项目中电网更新的价值,并让项目服务器做内部处理的其余部分:
_grid=window.projectDrilldownComponent.get_GridSatellite(); // get the grid
// Update the datavalue of a column (taskfield)
_grid.WriteDataValueByKey(...)
// Update the localizedvalue of a column (taskfield)
_grid.WriteLocalizedValueByKey(rec_key, fieldkey, fieldvalue,
function () {
console.log("Post Update task:" + rec_key);
cbSuccess(); // callback after update });
我可以给你一个JSOM例子来做到这一点:
var projContext = PS.ProjectContext.get_current();
var projects = projContext.get_projects();
var project = projects.getByGuid(projUid).get_draft();
var tasks = project.get_tasks();
var task = tasks.getByGuid(taskUid);
task.set_item(cfIntName, newValue);
var queueJob = project.update();
projContext.waitForQueueAsync(queueJob, 60,
Function.createDelegate(this, function(res) {
// Publish project here
}), function(error) {
console.error(error);
});
这应该是完整的(虽然我从脚本把它,所以请我截短成功/失败的处理程序)
从内存中CSOM打探有没有“set_item(CF,VAL)”辅助方法使用,但它是相似的,我觉得物业是通过索引器,如设置对象实例:
(须藤C#代码)
var draftTask = [get task instance];
draftTask[cfInternalName] = "Some value";
等等
如果没有再帮你总是可以反映ProjectServer.Client.DLL,你会看到内部实行“SetCustomFieldValue”,这是不公开暴露的。
希望可以帮助别人。