动态地在循环中派生标签名称

本文关键字:派生 标签名 循环 动态 | 更新日期: 2023-09-27 18:17:45

在Visual Web Part pageLoad事件(c#)中,我调用了一个REST API,它以XML格式返回结果。我想根据返回的结果数量动态设置表中的标签。在解析XML时,节点1将设置标签1,节点2将设置标签2等。

在下面的示例代码中,我想在迭代1时设置Label1_1.Text的值,在迭代2时设置Label2_1.Text的值,在迭代3时设置Label3_1.Text的值,以此类推。

如何做到这一点?

foreach (XmlNode elem in nodes)
{
    string childOne     = elem["contact1"].InnerText.ToString();
    string childTwo     = elem["contact2"].InnerText.ToString();
    string childThree   = elem["contact3"].InnerText.ToString();
    string childFour    = elem["contact4"].InnerText.ToString();
    // I want Label1 to effectively be Labelx (x being the iteration)
    // so it is dynamic based on the number of iterations in the loop
    Label1_1.Text = childOne;
    Label1_2.Text = childTwo;
    Label1_3.Text = childThree;
    Label1_4.Text = childFour;
}

动态地在循环中派生标签名称

如果您已经将容器中的所有标签作为控件,则需要在包含控件上使用FindControl方法。

Label toUpdate = (Label)myTable.FindControl("Label1_1");
toUpdate.Text = childOne;

如果标签控件不存在,则需要动态地创建和添加它们(在这种情况下,Id需要是唯一的)