Code Behind生成表格

时间:2012-01-01 06:39:17

标签: c# asp.net

我知道我的错是什么,但不知道如何解决。我正在尝试从Code Behind生成一个asp:table。

表格应该是3个单元格...我稍后会处理行限制。

这是我的代码:

GallaryImage g = new GallaryImage();
        var images = g.GetAll();

        photos.Style.Add("width","100%");
        photos.Style.Add("border-style","none");

        TableRow tr = new TableRow();
        TableCell tc = new TableCell();
        tr.Cells.Add(tc);
        tr.Cells.Add(tc);
        tr.Cells.Add(tc);

        int cntr = 0;
        TableRow row = new TableRow();

        foreach (var image in images)
        {
            cntr++;
            TableCell cell = new TableCell();
            Image i = new Image();
            i.ImageUrl = image.fullThumbPath;
            cell.Controls.Add(i);
            row.Cells.Add(cell);
            if(cntr%3==0)
            {
                photos.Rows.Add(row);
                row.Cells.Clear();
            }
        }
        if(row.Cells.Count > 0)
            photos.Rows.Add(row);
    }

我的问题是我需要在Foreach中创建一个新行,只有当我需要新行时...即,当我们添加了3个单元格时。

我以为我可以将行添加到表中,然后清除该行以开始新行 - 但这不起作用,因为我只是不断清除相同的行对象...因此,永远不要添加多行。

有人可以在这里协助我的逻辑吗?

1 个答案:

答案 0 :(得分:2)

   GallaryImage g = new GallaryImage();
    var images = g.GetAll();
    photos.Style.Add("width","100%");
    photos.Style.Add("border-style","none");       

    int cntr = 0;
    TableRow row = new TableRow();

    foreach (var image in images)
    {
        cntr++;
        TableCell cell = new TableCell();
        Image i = new Image();
        i.ImageUrl = image.fullThumbPath;
        cell.Controls.Add(i);
        row.Cells.Add(cell);
        if(cntr%3==0)
        {
            photos.Rows.Add(row);
            row = new TableRow();
        }
    }
    if(row.Cells.Count > 0)
        photos.Rows.Add(row);
}