[英]ASP.NET LinkButton
我正在开发一个在运行时加载LinkButton对象的用户控件(ascx)。 将aspx页面加载到Page_Load中时,每个LinkButton的数据源都是Dictionary的条目,例如([ferrari,2),(chevrolet,10),(jeep,6))是随机排序的。 当用户单击LinkButton进行PostBack时,以查询有关该项目的其他信息的数据库。 但是当执行到达事件时:
protected void objHyperLink_Click (object sender, EventArgs e)
是不再与启动事件调用相同的项目,而是不同的项目。 如何获得启动事件的正确对象?
谢谢
给定问题的注释线程,听起来您只希望在页面生命周期中进行一次随机分配,然后在处理按钮单击之前阻止它再次随机化。 您可以通过检查页面是否回发来做到这一点(单击按钮之一后服务器进入页面处理程序之前,服务器将重新经历页面生命周期)。
Icemanind建议将这项工作移出Page_Load
,这可能是个好主意,但您仍然需要相同的IsPostBack
检查。
public void Page_PreInit(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// create buttons
}
}
public void Page_Init(object sender, EventArgs e)
{
// The buttons exist, now assign events to them
}
我建议阅读臭名昭著的ASP.NET页面生命周期概述 MSDN文章,以更好地了解您应该在哪些页面事件中执行某些操作。
使用以上文章的摘录,您可以了解为什么我使用上述方法:
PreInit
:“创建或重新创建动态控件。” Init
:“使用此事件来读取或初始化控件属性。”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.