部分代码如下
假设:QstOrder=5,OptionCount=3;for(int j=0;i<OptionCount;j++)
{
  RadioButton RBQueryQst = new RadioButton();
  RBQueryQst.ID = "RBQueryQst" + QstOrder.ToString() +j.ToString();
  RBQueryQst.GroupName = QstOrder.ToString();
  RBQueryQst.Text = m + ". " + Option[i] + "<br>";
  PHViewQn.Controls.Add(RBQueryQst);
}
我往页面托了一个按钮id=BtSave,在按钮点击事件中捕获状态。
我在BtSave_Click使用RBQueryQst51.Checked,系统提示找不到名称“RBQueryQst51”。
那么该如何才能获取到底哪个按钮被点击了?

解决方案 »

  1.   

    部分代码如下
    假设:QstOrder=5,OptionCount=3;for(int j=0;j<OptionCount;j++)
    {
      RadioButton RBQueryQst = new RadioButton();
      RBQueryQst.ID = "RBQueryQst" + QstOrder.ToString() +j.ToString();
      RBQueryQst.GroupName = QstOrder.ToString();
      RBQueryQst.Text = ". " + Option[j] + "<br>";
      PHViewQn.Controls.Add(RBQueryQst);
      
    }
      

  2.   

    是写在这里吗?if(!IsPostBack)
    {
             for(int j=0;j<OptionCount;j++)
    {
    RadioButton RBQueryQst = new RadioButton();
    RBQueryQst.ID = "RBQueryQst" + QstOrder.ToString() +j.ToString();
    RBQueryQst.GroupName = QstOrder.ToString();
    RBQueryQst.Text = m + ". " + j.ToString() + "<br>";
    PHViewQn.Controls.Add(RBQueryQst);
    }
    }
      

  3.   

    使用:Request.From["id"]来获取动态创建控件的value.
      

  4.   

    我要获得的是是否被选择了,该如何做?我不要他的value
      

  5.   

    1。注意,在PostBack,你需要重新生成这些控件2。用FindControl,或者把这些控件放在一个数组变量里,譬如void Page_Load(....)
    {
    for(int j=0;j<OptionCount;j++)
    {
      RadioButton RBQueryQst = new RadioButton();
      RBQueryQst.ID = "RBQueryQst" + QstOrder.ToString() +j.ToString();
      RBQueryQst.GroupName = QstOrder.ToString();
      RBQueryQst.Text = ". " + Option[j] + "<br>";
      PHViewQn.Controls.Add(RBQueryQst);
      
    }
    }void BtSave_Click(...)
    {
      RadioButton RBQueryQst = (RadioButton)PHViewQn.FindControl("RBQueryQst51");
      //....
      bool b = RBQueryQst.Checked;
    }
      

  6.   

    可以了!!!
    但是我在Page_Load里面不能使用:if (!IsPostBack){}
    把代码放这里面就无法捕捉到。