回发后的asp.net中继器数据
本文关键字:net 中继器 数据 asp | 更新日期: 2023-09-27 18:29:23
在我的.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();
}
}
我想知道为什么我的中继器在我点击按钮后会丢失数据。(回发)
改为在OnInit
中绑定Repeater
。
http://codinglifestyle.wordpress.com/2009/10/08/repeaters-and-lost-data-after-postback-viewstate/
编辑:我假设您正在处理UserControl
的Load
事件,该事件在Page
的Load
事件之后引发。动态控件最迟必须在Page_Load中创建。
http://forums.asp.net/t/1191194.aspx
所以要么在Page_Init中绑定你的中继器,要么-我建议:
提供一个类似BindData
的公共函数,该函数可以从页面的加载事件中调用。这也是推荐的方式,因为页面是UserControl的控制器。
public void BindData()
{
var products = (from p in context.Products
select p).Take(30);
rptProducts.DataSource = products;
rptProducts.DataBind();
}