我正在 Win Forms 中开发一个应用程序工具,我的公司用它来查看 azure dev 中查询中存在的所有工作项。例如,当您按下查询时,您将在 webview2 的帮助下重定向到 azure dev 中的确切工作项。您已经可以在该工具中编写并保存通过按钮在网站上弹出的标签。但是,如果我尝试进行其他更改,例如添加工作项的描述,然后按保存按钮,则不起作用。
我知道您可以直接在网站上保存更改,但我的主管希望如此,因此您只需按工具中现有的保存按钮即可,而不必执行两次该过程。这是保存标签的按钮代码,以防有人好奇
private void button_sign_Click(object sender, EventArgs e)
{
if (textBoxTag.Text != "")
{
int id = currentworkitemID;
wis.publish(textBoxTag.Text, id, textchanged);
textchanged = false;
changed.Clear();
refreshGraph();
}
else MessageBox.Show("TAG CANNOT BE EMPTY");
}
在寻找答案时,我确实感觉到这件事似乎不太可能起作用,但我认为如果您已经能够在网站上保存标签,您也可以保存其他东西。如果有人知道什么,我会很高兴提供帮助。
编辑:发布字段
public void publish(string tag, int id, bool change)
{
foreach (WorkItem wi in CacheItems.Values)
{
if (wi.IsDirty || wi.Id == id)
{
if (wi.IsValid())
{
wi.Fields["Tags"].Value = wi.Fields["Tags"].Value.ToString() + "; " + tag;
try
{
wi.Save();
if (wi.Fields.Contains("Microsoft.VSTS.Common.Triage"))
{
if (isTriaged(wi.Id) && wi.Fields["Microsoft.VSTS.Common.Triage"].Value.ToString() != "Triaged")
{
Triaged.Remove(wi.Id);
Decided.Add(wi.Id);
goesToDecided(wi.Id);
}
else
if ((!isTriaged(wi.Id)) && wi.Fields["Microsoft.VSTS.Common.Triage"].Value.ToString() == "Triaged")
{
Triaged.Add(wi.Id);
Decided.Remove(wi.Id);
goesToTriaged(wi.Id);
}
}
Changed.Add(wi.Id);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message + "\n\nRedo updates in WI" + wi.Id.ToString() + "!", "Save Failed: ");
wi.SyncToLatest();
}
}
else
{
MessageBox.Show("WorkItem: " + wi.Id.ToString() + " not valid ");
}
}
}
从您发布的 C# 代码中,我注意到下面的行。
wis.publish(textBoxTag.Text, id, textchanged);
这一行似乎正在调用自定义方法“
publish
”来更新指定工作项上的标签。
您可以尝试参考该自定义方法的代码,查看该方法使用了哪些API/方法/属性来更新指定工作项上的标签字段。
然后您可以尝试重写自定义方法(或定义新方法)来更新指定工作项上的其他字段。如需更新评论,可以尝试在方法中使用评论相关的API/方法/属性。