2

我在 XML 中创建了一个新的工作项类型,并通过命令提示符导入它:witadmin importwitd...

假设我在 XML 中有一个这样定义的字段:

<FIELD name="severity" refname="MySeverity" type="String">
  <ALLOWEDVALUES>
    <LISTITEM value="High"/>
    <LISTITEM value="Medium"/>
  </ALLOWEDVALUES>
</FIELD>

现在,我想修改这个 FieldDefinition,并在其中添加另一个 LISTETEM,比如“Low”。我发现可以通过更改 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.
}

如果有人能对此有所了解,我将不胜感激。提前致谢!

4

1 回答 1

0

无法以编程方式修改列表值。而且,如果您想按照您的说法将值与表同步,那么如果您以编程方式进行操作,那将是不可能的,因为无法将表 ID 或代码与字段值一起存储。

如果您真的需要同步部分,那么您可以尝试使用一些疯狂的解决方法。您可以像往常一样使用 xml 存储允许的值以进行显示。之后,在一组单独的允许值中,您可以为用户组名称“xxxx”指定一个隐藏的索引值列表,这样它就不会显示出来。在这个隐藏列表中,您可以存储当前表状态的“TableId=ValueName”映射。然后下次修改您的某个字段时,您可以参考此列表并获取该值的先前名称并在索引和显示列表中对其进行修改。然后,您可以使用相同的索引列表来维护 Workflow 和 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>

非常开箱即用,但在绝对必要时可以使用。

于 2013-10-28T13:07:30.147 回答