2012-01-01 96 views
1

我知道我的錯,但不知道如何解決。我正在嘗試從Code Behind生成一個asp:表。表代碼隱藏

該表應該是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個小區。

我想我可以將該行添加到表中,然後清除該行以開始一個新行 - 但這不起作用,因爲我只是不斷清除同一行對象...因此,絕不會添加多行。

有人可以在這裏協助我的邏輯嗎?

回答

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); 
} 
+0

啊,不要清除行!而是做一個新的!修正了,謝謝! – Craig 2012-01-01 06:55:28