0

在 C# (ASP.NET) 中使用 GridView,我正在尝试迭代单行。通常,如果我可以提取每个单元格中的文本,这不会太困难:

string text = SecGrpGridView.Rows[0].Cells[i].Text;

但是,我的行中的一些字段包含标签,我相信提取值的唯一方法是使用 FindControl() 并将其转换为标签:

Label myLabel = (Label)SecGrpGridView.Rows[0].Cells[i].FindControl("Label5");
string text = myLabel.Text;

如您所见,第二个示例我需要知道标签的 ID,因此除非我按顺序命名标签,否则很难迭代。我知道未来需要在我的行中添加更多列,所以我正在寻找一种方法来迭代这一行,而不必按顺序命名标签。(即'Label1','Label2','Label3')有没有更好的方法来解决这个问题?

4

1 回答 1

1

您可以使用以下代码收集 GridView 中的所有标签

public static List<Label> FindLabelRecursive(Control root)
{
    List<Label> labels = new List<Label>();
    if (root is Label)
    {
        labels.Add(root as Label);
        return labels;
    }

    foreach(Control c in root.Controls)
    {
        if (c is Label)
        {
            labels.Add(c);
        }
        else
        {
            List<Label> childLabels = FindLabelRecursive(c);
            labels.AddRange(childLabels);
        }
    }

    return labels;
}

然后根据返回的标签进行处理。

于 2012-07-10T18:50:16.870 回答