在运行时添加ASP.Net按钮事件处理程序不起作用。

问题描述 投票:0回答:1

我需要为2个按钮添加一个事件处理程序,但我不能让它工作。我试着在我所知道的页面生命周期的每一个阶段添加事件处理程序,但是当按钮被点击时,事件从来没有被触发。我有两个按钮:btnEdit1和btnEdit2。这是我的代码。

protected override void OnInit(EventArgs e)
    {
        if (!IsPostBack)
        {
            base.OnInit(e);
            statusid = "2";
            assetid = "34";

            if (employeeid != null)
            {
                if (statusid == "3" || !SystemsManagementUtils.IsOwner(Convert.ToInt32(assetid), employeeid))
                {
                    btnEdit1.Attributes.Add("onclick", "javascript:alert('You do not have permission to edit this item');");
                    btnEdit2.Attributes.Add("onclick", "javascript:alert('You do not have permission to edit this item');");
                    btnDelete1.Attributes.Add("onclick", "javascript:alert('You do not have permission to delete this item');");
                    btnDelete2.Attributes.Add("onclick", "javascript:alert('You do not have permission to delete this item');");
                }
                else
                {
                    btnEdit1.Click += new EventHandler(btnEdit_Click);
                    btnEdit2.Click += new EventHandler(btnEdit_Click);
                    btnDelete1.Attributes.Add("onclick", "javascript:delItem(" + assetid + ");");
                    btnDelete2.Attributes.Add("onclick", "javascript:delItem(" + assetid + ");");
                }
            }
        }
    }

我已经尝试了OnPreInit()(因为按钮还不存在,所以没有工作)、OnInit()、OnInitComplete()、OnPreLoad()、Page_Load()、OnLoadComplete()、OnPreRender()和OnPreRenderComplete()。尽管我在调试器中成功地按照代码执行了这几行代码,但在任何时候,当其中一个按钮被点击时,事件都不会发生。我试着注释掉base.OnInit(e)行--我只是因为在一个例子中看到它才加上去的。我不知道为什么我需要它,但我很绝望。为什么这个不能用?

c# asp.net event-handling page-lifecycle
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.