在VS2010的团队资源浏览器Team Explorer中,用户可以自定义查询,以方便查找、处理工作项。自定义查询包括两部分:我的查询和团队查询。团队查询由具有权限的成员定义并保持,供 项目组人员共同使用。我的查询由用户自己定义,方便个性化设置。TFS的查询层次结构如图所示:
这些定义的查询,可以通过使用TFS QueryHierarchy类获取。实现效果如图:
1. 项目:var projectWithQueries = workItemStore.Projects[projectName];
2.
//递归函数
ShowQueries(IEnumerable<QueryItem> queries,TreeNode parentNode)
{
foreach (var queryItem in queries)
{
if (!queryItem.IsDeleted)
{
m_Queries.Add(queryItem);//将查询存入链表
//插入子节点
parentNode.Nodes.Add(queryItem.Id.ToString(), queryItem.Name);
//递归
if (queryItem is QueryFolder)
{
TreeNode node = parentNode.Nodes[queryItem.Id.ToString()];
ShowQueries(queryItem as QueryFolder, node);
}
}
}
}
3.调用递归函数
ShowQueries(projectWithQueries.QueryHierarchy,root);
4.执行查询
foreach (QueryItem queryItem in m_Queries)//遍历链表,根据点击的节点的ID找到相应的queryItem
{
if (queryItem.Id.ToString().Equals(queryId))
{
//执行
QueryDefinition queryToRun = queryItem as QueryDefinition;
WorkItemCollection workItemList = workItemStore.Query(queryToRun.QueryText, new Hashtable {{ "project", query.Project.Name}});
}
}