答案 0 :(得分:0)
您可以使用WIQL Queries获取所有字段的值。以下是所有Work item field index的列表。以下是如何获取特定项目的所有工作项和所有字段的示例:
using Microsoft.TeamFoundation.WorkItemTracking.Client;
Query query = new Query(
workItemStore,
"select * from issue where System.TeamProject = @project",
new Dictionary<string, string>() { { "project", project.Name } }
);
var workItemCollection = query.RunQuery();
foreach(var workItem in workItemCollection)
{
/*Get work item properties you are interested in*/
foreach(var field in workItem.Fields)
{
/*Get field value*/
info += String.Format("Field name: {0} Value: {1}\n", field.name, field.Value);
}
}
答案 1 :(得分:0)
我想有点晚了,但是因为它可能仍然对某人有所帮助,所以无论如何我都会发布这个。即使你没有指明,如果你在前端或后端。
tl; dr:尝试省略请求中的字段参数。
背景:我想在pull requests details-view中提供更多工作项详细信息,因此我为TamperMonkey创建了一个用户脚本。这意味着我没有“直接”访问TFS,因为我只通过JavaScript访问前端。
和你一样,我也注意到TFS没有输出所有字段。为了解决这个问题,我随后用jQuery修改了TFS ajax请求以省略fields-parameter。然后TFS开始返回工作项的所有现有字段。
我在TFS documentation for work-items
中找到了相关信息字段(字符串)
以逗号分隔的列表,其中包含每个工作项最多100个字段。 如果未指定,则返回所有字段。
如果实际上是你的用例,我也提供了我编写的脚本来修改ajax请求:
// by Joel Richard -> http://stackoverflow.com/a/26849194/4524280
function parseParams(str) {
return str.split('&').reduce(function (params, param) {
var paramSplit = param.split('=').map(function (value) {
return decodeURIComponent(value.replace('+', ' '));
});
params[paramSplit[0]] = paramSplit[1];
return params;
}, {});
}
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
// Modify ajax request to return all fields... definitely not a hack :D
if(options && options.url && options.url.indexOf('_apis/wit/workItems') >= 0) {
var parsedData = parseParams(options.data);
delete parsedData.fields;
options.data = $.param(parsedData);
}
});
$(document).ajaxComplete(function(event, request, settings) {
// trigger after ajax is complete to get values
if(settings && settings.url && settings.url.indexOf('_apis/wit/workItems') >= 0 && request.responseJSON) {
var workItemsData = request.responseJSON.value;
// -> workItemsData.fields contains all existing fields
}
});
仅适用于协议:我认为任何人都不应该在“正常”用例中使用$ .ajaxPrefilter,但在这种情况下,我没有太多选择。