代码之家  ›  专栏  ›  技术社区  ›  Andrew

访问动态创建的控件c#asp.net的值

  •  6
  • Andrew  · 技术社区  · 16 年前

    我正在尝试访问所选单选按钮的值。我有一个由子标题分隔的单选按钮列表(因此我没有使用radioList)

    //add list to radio button list
    RadioButton button1 = new RadioButton { 
    GroupName = "myGroup", 
    Text = singleType.appTypeName, 
    ID = singleType.appTypeID.ToString() 
    };
    radioArea.Controls.Add(button1);
    myLabel = new Label();
    myLabel.Text = "<br />";
    radioArea.Controls.Add(myLabel);
    

    RadioButton myButton = (RadioButton) radioArea.FindControl("myGroup");
    

    2 回复  |  直到 16 年前
        1
  •  9
  •   Tim    16 年前

    ID属性是这里的关键。

    您应该将ID属性设置为一个唯一的字符串,然后在回发时使用该字符串访问控件。

    GroupName只是单选按钮的标准名称属性的别名,因此当用户单击组中的单选按钮时,只能选择一个单选按钮。

    例如:

    //add list to radio button list
    RadioButton radioButton = new RadioButton();
    radioButton.GroupName = "radioGroup";
    radioButton.Text = singleType.appTypeID.ToString();
    radioButton.ID = singleType.appTypeName;
    
    radioArea.Controls.Add(radioButton);
    
    Label label = new Label();
    label.Text = "<br />";
    radioArea.Controls.Add(label);
    

    在上面的示例中,我将singleType.appTypeName指定为ID,假设这是唯一的。

    然后,要在回发时检索该值,请假设singleType.appTypeName=“mySuperApp”:

    RadioButton radioButton = (RadioButton) radioArea.FindControl("mySuperApp");
    

    现在,您可以访问radioButton变量来检查它具有哪个GroupName,获取它的值并检查它是否已被选中。

    您需要循环查看单选按钮,以找出选中了哪个。一个简单的方法是循环遍历radioArea的子控件,并检查eack控件,看看它是否是单选按钮,是否已选中。另一种选择是给每个ID一个前缀,即ID=“RAD_”+singleType.appTypeName,并循环Request对象,将每个ID与正确的后缀匹配。

        2
  •  3
  •   rocka    16 年前

    FindControl 您正在使用的方法,期望您将其传递给 ID 创建它时,它被分配给控制。

    因此,对于您的示例 RadioButton.ID singleType.appTypeID.ToString()

    希望这能有所帮助。