我有一个对象列表,每个对象有3个属性..我想遍历列表并将它们放在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 :(得分: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>
如上所示,Image和Hyperlink都在ItemTempate中,这意味着它们将显示在gridview中的一个单元格内。