繁体   English   中英

ASP.NET链接按钮

[英]ASP.NET LinkButton

我正在开发一个在运行时加载LinkBut​​ton对象的用户控件(ascx)。 将aspx页面加载到Page_Load中时,每个LinkBut​​ton的数据源都是Dictionary的条目,例如([ferrari,2),(chevrolet,10),(jeep,6))是随机排序的。 当用户单击LinkBut​​ton进行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.

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