如何为动态生成的按钮创建 OnClick 事件

本文关键字:按钮 创建 OnClick 事件 动态 | 更新日期: 2023-09-27 18:36:20

这就是我为按钮生成按钮和单击事件的方式。但是每次单击按钮时,它都会取最大值而不是单击按钮

       int noofquestions = 100;
        int k = 1;
        for (int i = 1; i <= noofquestions / 5; i++)
        {
            HtmlTableRow tRow = new HtmlTableRow();
            //TableRow tRow = new TableRow();          
            myTable.Rows.Add(tRow);
            for (int j = 1; j <= 5; j++)
            {
                HtmlTableCell tCell = new HtmlTableCell();            
                tRow.Cells.Add(tCell);
                Button link = new Button();
                //LinkButton link = new LinkButton();
                link.ID = "link" + k;
                link.Text = k.ToString();
                tCell.Controls.Add(link);
                ViewState["qno"] = k;
                link.Click += new EventHandler(link_Click);
                tCell.Controls.Add(link);
                //link.Click += new EventHandler(this.btn_click);
                k = k + 1;
            }
        }

        void link_Click(object sender, EventArgs e)
    {
    }

如何为动态生成的按钮创建 OnClick 事件

这取决于你如何读取值。

我认为我的意思最大值你质疑当你阅读ViewState["qno"]时它是最大值,因为它是它设置的。

相反,只需尝试从其他属性中读取即可。

void link_Click(object sender, EventArgs e)
{
    //If you do ViewState["qno"] it will be max value of K instead do following thing.  
}

做以下更新

    int noofquestions = 100;
    int k = 1;
    for (int i = 1; i <= noofquestions / 5; i++)
    {
        HtmlTableRow tRow = new HtmlTableRow();
        //TableRow tRow = new TableRow();          
        myTable.Rows.Add(tRow);
        for (int j = 1; j <= 5; j++)
        {
            HtmlTableCell tCell = new HtmlTableCell();            
            tRow.Cells.Add(tCell);
            Button link = new Button();
            //LinkButton link = new LinkButton();
            link.ID = "link" + k;
            link.Text = k.ToString();
            tCell.Controls.Add(link);
            ViewState[link.ID] = k;
            link.Click += new EventHandler(link_Click);
            tCell.Controls.Add(link);
            //link.Click += new EventHandler(this.btn_click);
            k = k + 1;
        }
    }

    void link_Click(object sender, EventArgs e)
{
        Button b = (sender)Button;
        string value = ViewState[b.ID].ToString();
}