如何使用C#代码更改asp按钮ID

时间:2013-09-08 06:58:33

标签: c# asp.net

我正在使用c#动态创建一个表格,我正在为每个单元格添加按钮。我需要为每个按钮分配按钮ID,以便我以后识别它们。我使用了以下代码。

bt.ID = rowIndex + c.ToString();   //bt.ID = "newID";

但是当我稍后尝试访问此按钮时,它会给我一个错误。

Button seatButton = (Button)this.FindControl("a1");
seatButton.BackColor = Color.Red;   //Gives an error here
seatButton.Enabled = false;         //Gives an error here

我认为问题在于更改按钮ID。我需要知道这个错误的原因和治愈方法..

1 个答案:

答案 0 :(得分:3)

此处seatButton必须在声明中为空:

Button seatButton = (Button)this.FindControl("a1");

您可以先查找控件的占位符,然后获取按钮控件,或者递归搜索所有页面控件,而不只是执行this.FindControl

方法I:使用ContentPlaceHolder方式。

ContentPlaceHolder contentPH = (ContentPlaceHolder)this.Master.FindControl("MyContentPlaceHolder");
 Button seatButton = (Button)contentPH.FindControl("a1");

方法II :: 以递归方式搜索页面控件。

从代码的适当部分调用getControl方法一次

GetControl(Page.Controls);

//和方法如下:

private void GetControl( ControlCollection controls )
{
  foreach (Control ctrl in controls)
{
     if(ctrl.ID == "a1")
    {
       seatButton = (Button)ctrl;
    }

     if( ctrl.Controls != null)
     // call recursively this method to search nested control for the button 
     GetControl(ctrl.Controls);    
}

}