动态地将控件放入网格视图中

本文关键字:网格 视图 控件 动态 | 更新日期: 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中,这意味着它们将显示在网格视图中的一个单元格中。