ASP.NET LinkBut​​ton

时间:2015-01-28 15:10:12

标签: c# asp.net linkbutton

我正在开发一个在运行时加载LinkBut​​ton对象的用户控件(ascx)。当在Page_Load中加载aspx页面时,每个LinkBut​​ton的数据源是一个Dictionary的条目,例如((ferrari,2),(chevrolet,10),(jeep,6))随机排序。当用户单击LinkBut​​ton以执行PostBack以使用有关该项的其他信息查询数据库时。但是当执行到达事件时:

protected void objHyperLink_Click (object sender, EventArgs e)

不再是启动事件调用的相同项目,而是另一个项目。如何获得启动事件的正确对象?

由于

1 个答案:

答案 0 :(得分:0)

鉴于您的问题上有评论主题,听起来您只希望随机分配在页面生命周期中发生一次,然后在您处理按钮单击之前阻止它再次随机化。你可以通过检查页面是否回发来做到这一点(这是在你点击其中一个按钮之后发生的事情,而服务器在它到达你的点击处理程序之前会经过页面生命周期)。

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 Page Life Cycle Overview MSDN文章,以便更好地了解您应该在哪些网页上执行某些操作。

使用上述文章的摘录,您可以看到我使用上述方法的原因:

  • PreInit:“创建或重新创建动态控件。”
  • Init:“使用此事件来读取或初始化控件属性。”