【问题标题】:ASP.NET Programmatically adding button with an eventASP.NET 以编程方式添加带有事件的按钮
【发布时间】:2014-11-28 17:41:01
【问题描述】:

我正在制作一个动态表,只要单击添加行按钮,它就会添加行。 我正在以编程方式创建按钮并将其添加到表头。 在该按钮下方,在同一列上也会有删除行按钮。

我遇到了一个问题,当我单击按钮时,没有调用该事件。我是否正确创建了按钮?如果没有,那我该怎么做?如果是我,那你知道问题出在哪里吗?

区域 Add_Table_Header

    TableHeaderCell thcOne = new TableHeaderCell();
    TableHeaderCell thcTwo = new TableHeaderCell();
    TableHeaderCell thcThree = new TableHeaderCell();
    TableHeaderCell thcrFour = new TableHeaderCell();
    TableHeaderCell thcFive = new TableHeaderCell();
    TableCell thcRowAction = new TableCell(); //THIS IS THE COLUMN WITH THE 
                                              //ADD BUTTON

    thcOne.Text = "Who";
    thcTwo.Text = "Date Started";
    thcThree.Text = "Date Ended";
    thcrFour.Text = "Causes?";
    thcFive.Text = "Result";

            //HERE IS WHERE I CREATE AND ADD THE BUTTON

    Button addRowButton = new Button();
    addRowButton.Text = "Add Row";
    addRowButton.Click += new EventHandler(this.AddNewRow_Click);
    thcRowAction.Controls.Add(addRowButton);

    TableHeaderRow headerRow = new TableHeaderRow();
    headerRow.Cells.Add(thcOne);
    headerRow.Cells.Add(thcTwo);
    headerRow.Cells.Add(thcThree);
    headerRow.Cells.Add(thcrFour);
    headerRow.Cells.Add(thcFive);
    headerRow.Cells.Add(thcRowAction);

    table.Rows.Add(headerRow);

    #endregion


protected void AddNewRow_Click(object sender, EventArgs e)
    {
        if (ViewState["RowsCount"] != null)
        {
            numOfRows = Convert.ToInt32(ViewState["RowsCount"]);
            GenerateTable(numOfRows);
        }
    }

再次出现按钮,但没有输入正确的事件方法。 感谢您的帮助和时间:)

顺便说一句,当我以声明方式进行时,例如:

<asp:Button ID="BTNAdd" runat="server" Text="Add New Row" OnClick="AddNewRow_Click" />

该事件将注册并完全正常工作。

新信息: 我也出现了一个删除按钮,我没有用它注册任何类型的事件,但是当我单击它时,它的作用与添加行按钮完全相同,这可能是因为母版页或其他来源正在告诉按钮先做什么还是默认做什么?

谢谢:)

【问题讨论】:

    标签: button asp.net-2.0


    【解决方案1】:

    您应该在页面的 Init 事件处理程序中添加动态控件,以便适当地触发 ViewState 和事件。

    尝试这样做:

    protected void Page_Init(object sender, EventArgs e)     
         {         
             Button btn = new Button();         
            btn.ID = "btnTest";         
             btn.Text = "I was dynamically created";         
             btn.Click += new EventHandler(btnTest_Click);         
            Panel1.Controls.Add(btn);     
         }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-02
      • 1970-01-01
      • 1970-01-01
      • 2016-11-22
      • 2011-01-07
      • 2012-06-20
      • 1970-01-01
      相关资源
      最近更新 更多