将用户控件列表绑定到gridview

时间:2014-10-03 17:30:18

标签: c# asp.net gridview

我拼命地寻求徒劳。我想将用户控件的List(T)( .ascx )绑定到gridview。我在代码隐藏中初始化我的控件:

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事件中。这不起作用:显示对象的表示。然而,当我将控件放在Panel中时,一切都有效。

1 个答案:

答案 0 :(得分:0)

不要使用GridView。使用Repeater。并将其绑定到数据,而不是绑定到控件列表。例如:

<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();
        }
    }

如果你想分页,那么你应该利用lazy loading(如果你使用Entity Framework为你处理这个),Linq函数.Take() and .Skip()