2

我正在使用 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。我需要知道这个错误的原因和治疗方法..

4

1 回答 1

3

在这里,您seatButton 的声明必须为空:

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

与其只做this.FindControl,不如先查找控件的占位符,然后获取按钮控件,或者递归搜索所有页面控件。

方法一:使用ContentPlaceHolder方式。

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

方法二::通过页面控件递归搜索。

从代码的适当部分调用一次 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);    
}

}
于 2013-09-08T07:29:49.843 回答