2011-07-03 71 views
0

我有一個對象列表,每個對象都有3個屬性..我想遍歷列表並把它們放在一個gridview中。把控件放入gridview動態

public void PutAllObjects in a GridView(List<CommentsObject>commentsData) 
{ 
    int num=0; 
    foreach(var item in commentsData) 
    { 
       Image img=new Image(); 
       img.imageUrl=item.ImageOfUser; 
       Hyperlink hl=new Hyperlink(); 
       hl.Text="<br/>"+item.UsersName; 
       GridView1.Rows[num++].Cells[0].Controls.Add(img); 
       GridView1.Rows[num].Cells[0].Controls.Add(hl); 
       lbl=new Label(); 
       lbl.Text=item.UsersComment 
       GridView1.Rows[num].Cells[1].Controls.Add(lbl); 

    } 

} 

我應該得到的是我的GridView1有40行。每行有2列。第一列有一個超鏈接的圖像,第二列已得到用戶的意見(標籤)。

我對我的方式寫代碼?或者有沒有更好的方法來實現我想要的

+0

如果gridview和列表的大小不一樣會發生什麼? –

+0

爲什麼應該是相同的大小..?我允許分頁..難道其餘的行溢出到下一頁? – WithFlyingColors

+0

如果在GridView中有** 40行**並且列表包含** 41項** foreach循環將在'GridView1.Rows [41]' –

回答

2

你應該這樣做。

GridView1.DataSource = commentsData; 
GridView1.DataBind(); 

如果您只想綁定兩列,您可以執行以下操作。

var source = from p in commentsData 
      select new {p.ImageOfUser, "<br/>" + p.UsersName, p.UsersComment }; 
GridView1.DataSource = source; 
GridView1.DataBind(); 

    <asp:GridView ID="gvView" runat="server" AutoGenerateColumns="False"> 
       <Columns> 
        <asp:TemplateField HeaderText="#"> 
         <ItemTemplate> 
          <asp:Image ID="imgName" imageUrl='<%# Bind("ImageOfUser") %>'></asp:Image> 
          <asp:Hyperlink ID="hyperLink" Text='<%# Bind("UsersComment") %>' ></asp:Hyperlink> 
         </ItemTemplate> 
         <ItemTemplate> 
          <asp:Label ID="lblMessage" Text='<%# Bind("UsersComment") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
       </Columns> 
    </asp:GridView> 

正如可以看到的圖像和超鏈接以上均爲內ItemTempate,這意味着它們將在GridView內的一個小區內的被顯示。

+0

是的,但如果我這樣做..如何將網格視圖知道什麼屬性放入什麼控制..如何知道把註釋屬性放在第二個單元格舉例..沒關係Jethro,你的解決方案不會工作 – WithFlyingColors

+0

@WithFlyingColors,當你創建你的GridView時,你可以指定列,即第一列有圖像,第二列有超鏈接,第三列有標籤。然後在數據源獲取綁定時綁定某些屬性。例如,當數據源被綁定時設置imageUrl。 – Jethro

+0

再次,gridview如何知道什麼控件放入什麼單元格..我使用每個Gridview行2個單元格 – WithFlyingColors