我在XML中创建了一个新的工作项类型,并通过命令提示符导入它: witadmin importwitd ...
假设我在XML中定义了一个字段:
<FIELD name="severity" refname="MySeverity" type="String">
<ALLOWEDVALUES>
<LISTITEM value="High"/>
<LISTITEM value="Medium"/>
</ALLOWEDVALUES>
</FIELD>
现在,我想修改这个FieldDefinition,并添加另一个LISTITEM,说“低”。 我发现可以通过更改XML并重新导入它来完成。 我的问题是,有没有办法在C#中以编程方式这样做?
有关详细信息,我已设法通过以下代码查询字段定义:
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri(my_uri));
WorkItemStore wistore = (WorkItemStore)tpc.GetService(typeof(WorkItemStore));
WorkItemType witype = wistore.Projects["MyProject"].WorkItemTypes["MyWorkItemType"];
for (int i = 0; i < witype.FieldDefinitions.Count; ++i)
{
FieldDefinition fd = witype.FieldDefinitions[i];
// Not able to modify fd and save.
}
如果有人能够对此有所了解,我会很感激。 提前谢谢!
答案 0 :(得分:0)
无法以编程方式修改列表值。如果你想像你说的那样将值与表同步,那么如果以编程方式执行它是不可能的,因为无法将表Id或代码与字段值一起存储。
如果您确实需要同步部分,那么您可以尝试使用一些疯狂的解决方法。您可以像平常一样使用xml存储允许的值以进行显示。之后,在一组单独的允许值中,您可以为用户组名称“xxxx”指定隐藏的索引值列表,以便它不会显示。 在此隐藏列表中,您可以存储表的当前状态的“TableId = ValueName”映射。 然后,下次修改其中一个字段时,您可以引用此列表并获取该值的先前名称,并在索引和显示列表中对其进行修改。 然后,您可以使用此相同的索引列表来维护工作流和FormLayout的设置。
参考以下示例...
<ALLOWEDVALUES>
<GLOBALLIST name="globalListName" />
<LISTITEM value="Name1" />
<LISTITEM value="Name2" />
<LISTITEM value="Name3" />
. . .
</ALLOWEDVALUES>
<ALLOWEDVALUES for="xxxxxx" expanditems="false">
<GLOBALLIST name="globalListName" />
<LISTITEM value="Id1=Name1" />
<LISTITEM value="Id2=Name2" />
<LISTITEM value="Id3=Name3" />
. . .
</ALLOWEDVALUES>
非常开箱即用,但如果绝对必要,可以使用。