将用户控件列表绑定到gridview

本文关键字:gridview 绑定 列表 用户 控件 | 更新日期: 2023-09-27 18:25:25

我拼命寻找,但徒劳无功。我想将用户控件列表(T)(.ascx)绑定到网格视图。我在代码背后初始化我的控件:

List<myControl> ctrls = new List<myControl>();
myControl ctr = LoadControl("~/Control.ascx") as myControl;
ctr.Name = ...
// ...
ctrls.Add(myControl); // add new control to the collection

之后,我将此列表绑定到Gridview控件:

this.GridView1.DataSource = ctrls;
this.gridView1.DataBind();

在条件为If (!IsPostBack)的Page_Load事件中。这不起作用:将显示对象的表示。然而,当我把控件放在一个面板中时,所有控件都工作了。

将用户控件列表绑定到gridview

不要为此使用GridView。使用中继器。并将其绑定到数据,而不是控件列表。示例:

<asp:Repeater runat="server" id="ControlsRepeater">
    <ItemTemplate>
       <uc:MyControl runat="server" />
    </ItemTemplate>
</asp:Repeater>

背后的代码

protected void Page_Load(object sender, EventArgs e)
    {
    if(!IsPostBack)
        {
        var myData=GetData(); //should return some type of ICollection representing your data to bind to
        ControlsRepeater.DataSource=myData;
        ControlsRepeater.DataBind();
        }
    }

如果你想要分页,那么你应该利用延迟加载(如果你使用实体框架,实体框架会为你处理这个)和Linq函数.take()和.Skip().