动态地将控件放入网格视图中
本文关键字:网格 视图 控件 动态 | 更新日期: 2023-09-27 18:01:05
我有一个对象列表,每个对象有3个属性。。我想遍历列表,并将它们放在一个网格视图中。
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列。。第一列有一个带有超链接的图像,第二列有用户评论(标签(。。
我写代码的方式对吗?或者有更好的方法来实现我想要的
您应该这样做。
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中,这意味着它们将显示在网格视图中的一个单元格中。