使用标签迭代GridView行

时间:2012-07-10 18:32:12

标签: c# asp.net .net gridview

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

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

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

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

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

1 个答案:

答案 0 :(得分: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;
}

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