繁体   English   中英

回发后的asp.net转发器数据

[英]asp.net repeater data after postback

在我的.ascx控件中:

<asp:Repeater ID="rptProducts" runat="server">
    <ItemTemplate>
        <asp:Label ID="lblProductName" runat="server">
            <%# Eval("Name") %>
        </asp:Label>
    </ItemTemplate>
</asp:Repeater>

<asp:Button ID="btnGo" runat="server" Text="Postback" onclick="btnGo_Click" />

在代码隐藏中:

protected void Page_Load(object sender, EventArgs e)
{
    if(!this.IsPostBack){
        var products = (from p in context.Products
                        select p).Take(30);

        rptProducts.DataSource = products;
        rptProducts.DataBind();
    }
}

我想知道为什么我的中继器在点击该按钮后丢失了它的数据。(回发)

Repeater绑定在OnInit

http://codinglifestyle.wordpress.com/2009/10/08/repeaters-and-lost-data-after-postback-viewstate/

编辑 :我假设你正在处理的UserControlLoad它获取引发的事件Page S' Load事件。 最迟必须在Page_Load中创建动态控件。

http://forums.asp.net/t/1191194.aspx

所以要么在Page_Init中绑定你的Repeater,要么我会推荐:

提供像BindData这样的公共函数,可以从页面的load-event中调用它。 这也是推荐的方式,因为该页面是UserControl的控制器。

public void BindData()
{
    var products = (from p in context.Products
                    select p).Take(30);

    rptProducts.DataSource = products;
    rptProducts.DataBind();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM